イメージ通りではなかなかうまくいきません。
出来たのはこんな感じです。
input int Magic=316;
sinput string Comments="Swap-4Pair";
//0:NZDJPY 1:EURCADs 2:USDCHF 3:GBPAUDs;
string Pair[4]={"NZDJPY.oj5k","EURCAD.oj5k","USDCHF.oj5k","GBPAUD.oj5k"};
int d,i,cPos[4];
double Price[4];
void OnTick()
{
Price[0]=MarketInfo(Pair[0],MODE_ASK);
Price[1]=MarketInfo(Pair[1],MODE_BID);
Price[2]=MarketInfo(Pair[2],MODE_ASK);
Price[3]=MarketInfo(Pair[3],MODE_BID);
for(i=0;i<4;i++){cPos[i]=0;}
for(i=OrdersTotal()-1;i>=0;i--)
{
d=OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber()==Magic)
{
string OS=OrderSymbol();
if(OS==Pair[0]){cPos[0]++;}
if(OS==Pair[1]){cPos[1]++;}
if(OS==Pair[2]){cPos[2]++;}
if(OS==Pair[3]){cPos[3]++;}
}
}
if(!cPos[0]&&MarketInfo(Pair[0],MODE_SPREAD)<13)d=OrderSend(Pair[0],OP_BUY,0.1,Price[0],5,0,Price[0]*1.01,Comments,Magic);
if(!cPos[1]&&MarketInfo(Pair[1],MODE_SPREAD)<19)d=OrderSend(Pair[1],OP_SELL,0.1,Price[1],5,0,Price[1]*0.99,Comments,Magic);
if(!cPos[2]&&MarketInfo(Pair[2],MODE_SPREAD)<12)d=OrderSend(Pair[2],OP_BUY ,0.1,Price[2],5,0,Price[2]*1.01,Comments,Magic);
if(!cPos[3]&&MarketInfo(Pair[3],MODE_SPREAD)<23)d=OrderSend(Pair[3],OP_SELL,0.1,Price[3],5,0,Price[3]*0.99,Comments,Magic);
}
10年ほど4通貨でバックテストをし合成したのがこちら
初期証拠金1,000,000円
一定額の利益が出れば利確&再オーダー
最大ポジションは各ペア1個x4です。
10年で金利が変わらなければ367%の利益です。
こつこつとスワップは取れるのですが何年かすると利確&再オーダーはストップします。
NYクローズ直前のオーダーやインジケータを使用してもよかったかもしれません。
取りあえずまわしてみようかな♪
0 件のコメント:
コメントを投稿