[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 54

 
vovan-gogan:

私の例でも同じではないでしょうか?どう違うのですか?スタート機能を付けなかったことを除けば。


いっそのこと、こんな風に。

int start()                            // Спец. функция start
  {
    int Orders=0;
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          int ticket = OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic);     
          if (ticket>0)              // Если ордер установлен
             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)  Sleep(100); // Если ордер выбран         
          Orders++;
          Alert ("Ордер выставлен.Orders = ",Orders );
             
        }   
       Alert ("Ордеров нет. Orders = ",Orders );    
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }


                 
         
      
 
vovan-gogan:

でも、やってみると違いがわからない。何がいけなかったのか、教えてください。

やってみて、その結果を書くのです。設定時に必要な確認が なされていないため、お客様の状態に合わせてオーダーが設定されない場合があります。さらに、何らかの理由でインストールされなかったときのエラーハンドラを追加しておいて損はないでしょう。スリッページメイク>0 - これはまずすぐにわかりますね。
 
保留中の注文の スリッページのことでしょうか?
 
vovan-gogan:
保留中の注文のスリッページのことでしょうか?


テキストをいじっていないで、セットして終わり・・・確認してみてください。

少なくともテスターではすべてがうまくいくはずです。距離が短いために注文を設定しなかった場合、次回には設定されます。あなたの質問は他のことに関するものですが、その後、他のすべてを終了します。

 
Roman.:


テキストを選んでないで、セットして終わり...確認してください。

少なくともテスターではすべてがうまくいくはずです。もし、わずかな距離のために注文を設定しなかったとしても、次回には設定されます。あなたの質問は他のことについてのものでしたが、その後、他のすべてを終わらせ、そのままテスターで確認してください。


しかし、このような状況では、まず私の間違いを理解する手助けをしてほしい。他人が開発したものを使ってばかりで、自分の間違いに気づかないようでは、プログラマーとして成長することはできません。ご賛同いただけると幸いです
 
vovan-gogan:

私の例でも同じではないでしょうか?どう違うのですか?スタート機能を付けていないことを除けば。


ローカル変数とグローバル変数の概念を再確認してください。また、今回の工事により

 if (OrdersTotal()>= 1) return(0);  

同じ口座で手動または他のEAによってポジションが開設される場合、EAは取引条件が保留注文を設定 するトリガーとなったとき、保留注文を設定しませんが、戦略テスターとしては正常に動作します。

一般的なケースでは、あなたのアルゴリズムのロジックに応じて、この非常にExpert Advisorによって開かれたまたは設定された注文によってループを手配する必要があり、保留中の注文がない場合、それを設定し、注文のカウンタを増加させ、情報を印刷します。

 
vovan-gogan:

快くご協力いただきありがとうございます。しかし、この特殊な状況下では、まず自分の誤りを理解することに力を貸してほしいのです。他人の解答ばかり使っていて、自分の間違いに気づかないようでは、プログラマーとしての成長は望めません。ご賛同いただけると幸いです


同意見です。クライアント端末のローカル変数とグローバル 変数の概念を再確認してください。



int start()                            // Спец. функция start
  {
    int Orders=0;    
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          int ticket = OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic);     
          if (ticket>0)              // Если ордер установлен
             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)  Sleep(100); // Если ордер выбран         
          Orders++;
          Alert ("Ордер выставлен.Orders = ",Orders );
             
        }   
         
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }
 
vovan-gogan:

しかし、このような状況では、まず私の間違いを理解する手助けをしてほしいのです。


もう質問してください...。:-Р

前回の記事のバリアントを試してみてください。

ここの チュートリアルとドキュメントを読んでください。これ以上詳細なミンチを噛み砕いたものはまだどこにもありません。

 
グローバル変数とローカル変数 についてのヒントありがとうございます) もっと読んでみます)
 
Alexandr24:
でチャート(リアルタイム)を開くと、なぜか、教えてください。 M30タイムフレーム というパラメータを設定し、int shift=iBarShift(NULL,PERIOD_M5,some_time); を適用すると、その通りになりますが、テスターで同じ指標を期間M30で実行すると、シフトが計算されないのですが?

この問題を解決する方法を知っている人はいますか?