if (flag==1) { Symb="EURUSD"; OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и flag=2; ///выходим тк больше мы ни чего не можем сделать return(0); }
if (flag==2) { Symb="AUDUSD"; OrderSend(Symb,...) flag=3; return(0); }
if (flag==3) { Symb="USDJPY"; OrderSend(Symb,...) flag=0;//Возвращаем флаг в начальное состояние.. return(0); } return(0);}
実際、このような場合、私は通常、GetLastError()をより広く使うようにしています。もちろん、私はプロではありません。
GetLastError()は、例えばスレッドがビジー状態である場合など、何かが行われない理由を言うことになっているのは理解していますが、私は全く何も行っていません!
異なる楽器に対して3つの注文を開けばいいのでは?例えばフラグ変数を作ってみてはどうでしょう
グローバル変数に
int flag=0;
string Symb;
///////////////
では
int start()
{
if (условие открытия)
{flag=1;}
if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}
if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}
if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}
また、オープニングのチェックを追加し、チェックに成功した場合のみ旗を移動させるようにすると良いと思います。
ありがとうございます!やってみます。
}
else Print ("Error opening long position:",GetLastError());
は、OrderSelect()が失敗した場合、エラーを返します。
if(OrderSend(Symbol(), OP_SELLSTOP, getLots, Bid, 0, 0, 0, WindowExpertName(),Magic, 0, Red) < 0)
Print("Error Open Sellstop = ",GetLastError());
。
OrderSend()が失敗した場合、エラーを返す。OrderSend()になっているバージョンもありますが、動作しません。
なぜ、テスターで動作するのでしょうか?
なぜ、テスターで動作するのでしょうか?
しかし、私が言いたいのは、Print関数をもっと広範囲に使用することで、(たとえその後のGetLastErrorがなくても)。
をクリックすると、EAがどのように取引されているかがよくわかります。
は、例えばこんな感じです。
if(MA1>MA2 && StochPrev<StohCur && StochPrev<SignPrev )
{
print("買い注文の 条件を満たしました");
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,",16895,0,DeepSkyBlue);。
if(チケット>0)
}