どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 911

 
Viktorline14:
みんな助けてくれーーーー

EAのテキストをコピーするよりも、スクリーンショットを作ってここに投稿する方が簡単なのでしょうか?スクリーンショットからMEに手入力し、解明しようとする人がいると思いますか?

コンパイラが関数の結果をチェックするように言っている場合は、チェックする必要があります。難しいことではないんです。

if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) Print("Opening Buy error #", GetLastError()); //ну и другие действия по усмотрению, в случае ошибки
 

 if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 {OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, SL, TP, NULL, 0, 0,clrBlue);

     MyOrderStateB = 1; 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) 

   Print("Opening Buy error #", GetLastError());}

   else Sleep(2);

ありがとうございます。正しいのか間違っているのか、警告はまだ出ますが

 
ストップロスやテイクプロフィットは絶対値で持っているので、Bid - Sl*Pointのような相対値で必要です。
 
abeiks:

こんにちは。

私のExpert Advisorでは、直前のローソク足を確認し、条件が許せばポジションを建て、許せなければ建てないようにしています。問題は、直前のローソク足の状態を確認する前にポジションが開設されることです。それから、ジャーナルでポジションが開いているのを見て、開いてはいけないとわかる。どうすれば直るのか?

ありがとうございます、自分でもわかってきました。ポジションを開く 関数の上に、直前のローソク足を確認する関数を置きました。
 
杜撰な表現で申し訳ありません
 
if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )
{OrderSend(Symbol()、OP_BUY、OrderValue、NormalizeDouble(Ask、Digits)、Slippage、Bid - SL * Point、 Ask + TP * Point、NULL、0、0、clrBlue);
MyOrderStateB = 1;
if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue))を実行します。
Print("Opening Buy error #", GetLastError());}。
else Sleep(2);

if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )

{OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point , NULL, 0, 0,clrRed).です。
MyOrderStateS = 1; }.

else Sleep(2);

そして、relativeでも同じものが出ます(

 
Viktorline14:

 if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 {OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, SL, TP, NULL, 0, 0,clrBlue);

     MyOrderStateB = 1; 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) 

   Print("Opening Buy error #", GetLastError());}

   else Sleep(2);

ありがとうございます。正しいのか間違っているのか、警告はまだ出ますが

間違っている、OrderSendを2回呼ぶ必要はない。そして、SLとTPはpips単位ではなく、価格との相対値で計算すべきです。また、AskとBidの建値ではなく、SLとTPの計算結果を正規化する必要があります。

一般的には、「学び、学び、また学ぶ」 ))))

 
evillive:

間違っている、OrderSendを2回呼ぶ必要はない。そして、SLとTPはポイントではなく、価格との相対値で計算する必要があります。また、AskとBidの建値ではなく、SLとTPの計算結果を正規化する必要があります。

一般的には、「学び、学び、また学ぶ」 ))))

ありがとうございました)))おかげですべてがうまくいきました:3
 

今回もありがとうございました

今ひとつ問題があって、EAは私が望んだように1つの注文ではなく、複数の注文を連続して開くのです(

int start()



  { S1a = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_MAIN, 1), 0);

   S1b = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_SIGNAL, 1), 0);

   

   if(MyOrderStateB == 1)Sleep(300000);

    else MyOrderStateB = 0;

   if(MyOrderStateS == 1)Sleep(300000);

    else MyOrderStateS = 0;

    

 

     

   if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, Bid - SL * Point, Ask + TP * Point, NULL, 0, 0,clrBlue))

   Print("Opening Buy error #", GetLastError());  

     else Sleep(2);

   MyOrderStateB = 1;

  

   


      

   if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )


    

    

       if(!OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point , NULL, 0, 0,clrRed))

       Print("Opening Sell error #", GetLastError()); 

       else Sleep(2);

       MyOrderStateS = 1;

       

      

       

       

       

   return(0);}

 

ストラテジーテスターで 不思議な挙動を確認しました。私のEAは、保留中のストップオーダーを設定し、トラブっています。次のようなことが起こります。エキスパートアドバイザーは、買いストップと売りストップを現在の価格から30ピップに設定します(シンボル - GbpUsd、4桁、最小レベル = 3ピップ)。しばらくすると、トリガーがかかっていない場合は、マーケットに追従して引き上げられます。だから、私が見るもの。改造が成功し、改造が成功し、ある時点でスラムとエラー#1がポップアップ表示されます。つまり、すべてがうまくいっていて、EAも同じ動作をしていたのに、突然このエラーがポップアップするのです。価格はすべて桁に正規化されています。一般に、OrderModify()関数の入力に渡されるすべての値は正規化されます!

テスターでEAがこのような動作をする理由は何でしょうか?