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

 
EAのコードに、各通貨ペアで動作することをどのように記述すればよいですか?記号が違うのか、通貨ペアが違うのか、わからない。
 
logut:
EAのコードに、各通貨ペアで動作することをどのように記述すればよいですか?別のシンボルを用意したのですが、うまくいきません。
通貨ペアを変えても同じ記号で十分なのですが。
 
こんにちは。私はEAを書きました、それはテスターで良い結果を示しています。エラーなくコンパイルされる。ユーロドルに付属しています。
実際の取引では、取引は開かれず、取引開始の条件が現れるとメッセージが表示されます。
2015.02.11 14:03:03.656 '1435109': order buy 0.01 EURUSD opening at market sl: 1.12697 tp: 1.13747 failed [Invalid S/L or T/P] (無効なS/LまたはT/Pです。
私の理解では、これは有効なストップ&テイクではない、ということです。ストップとテイクを指定した注文を手動で出す。価格とストップの間に距離がある
価格とポイントの間には、数倍の距離があるのです。停止と電流の計算はすべて正規化されています。何が原因なのか、理解できないので、教えてください。
以下はそのプログラムです。
int start()
{
//------------------------------------------------------------------------------------------------

if (注文合計()>0)
を返します。
double monymax8=High[ArrayMaximum(High,3,0)];
if (OrderSend関数に到達するプログラムなので、条件そのものは理由にはならないので削除しました)

{ double stop_sell8=monymax8+Point;
double STOP_S8=NormalizeDouble(stop_sell8,Digits)。
double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid)となります。
double PROFIT_S8=NormalizeDouble(profit_sell8,Digits)とする。
double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
double LOT8=NormalizeDouble(my_lot8,2);
OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8)。
}
//------------------------------------------------------------------------------------------------
を返します。
}

 
Rogoza:
こんにちは。私はEAを書きました、それはテスターで良い結果を示しています。エラーなくコンパイルされる。ユーロドルに付属しています。
実際の取引では、取引は開かれず、取引開始の条件が現れるとメッセージが表示されます。
2015.02.11 14:03:03.656 '1435109': order buy 0.01 EURUSD opening at market sl: 1.12697 tp: 1.13747 failed [Invalid S/L or T/P] (無効なS/LまたはT/Pです。
私の理解では、これは有効なストップ&テイクではない、ということです。ストップとテイクを指定した注文を手動で出す。価格とストップの間に距離がある
価格とポイントの間には、数倍の距離があるのです。停止と電流の計算はすべて正規化されています。何が原因なのか、理解できないので、教えてください。
以下はそのプログラムです。
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

このようにコードをフォーマットしてください。そのためのSRCボタンがあります。

これらの口座タイプでは、ストップなしの注文が最初に開かれるため、開かれず、次にOrderModify()

 
evillive:
マジックを必要とするのは、同じシンボルに複数の「トレーダー」がいる場合だけですが、それだけで十分なチェックが可能です。
なるほど、では気になるのは、EAを多通貨化する方法ですね。
 
AlexeyVik:

このようにコードをフォーマットしてください。そのためのSRCボタンがあります。

開かないのは、これらの口座タイプでは、ストップなしの注文が最初に開かれ、その後OrderModify()

ありがとうございました!コードを書き直します。
 
logut:
そこで質問なのですが、EAを多通貨化するにはどうしたらいいのでしょうか?
コドベースを開き、そこで多通貨EAを見つけ、どのように機能するかを把握します。
 

だいたい、何かにすごくこだわっていて、どうしたらいいのかわからないんです。

変数line1,line2,line3などを持っています。forループ 文を通して、各変数の値をカウントしたいのですが。

変数列の正しい列挙の仕方とは?行 "+"i "のようにやってみましたが、当然ながらナンセンスな結果になります。

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
配列line[]を作ってループさせた方がいいかもしれません。
 

なぜ、間違ったオブジェクトが表示されるのですか?左向きの三角形https://docs.mql4.com/ru/constants/objectconstants/arrows コード 3 のはずが、上向きの矢印 Wingdings コード 241 が表示 されています。

オブジェ

プログラムコード (ObjectSet(objName, OBJPROP_ARROWCODE, 3); がある)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}