[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 311

 

テスターの操作についての質問:テストを実行した後、パラメータ(日付、通貨ペア、タイムフレーム)を変更してテストを再実行すると、実行されますが、終了しても「チャート」や「レポート」などのタブの情報は全く変化せず、全て前回のテストのまま です。保存されたレポートも古いものであることが判明。その理由と解決方法を教えてください。もしかして、結果をリセットする機能があるのでは?

マニュアルや記事を読んだり、フォーラムを検索しても、そのような問題についての言及はありませんでしたが...。

 

Expert Advisorとして使用するために、外部ファイルを使ってインジケータを表示する必要があると思うのですが、どうしたものでしょう。私は助けてください、ほんの少し左、お金残念、取引口座の最後の今が、システムは、誰かが手動貿易に 小さなレポートをスカイプする必要がある場合、チェック、耕作されていません。

1)報告書とともに

彼はそれらと一緒に始めたことを終えるのを助ける人は、戦略(インジケータクランチ戦略の唯一の部分が、劣らず重要)を共有します。 本物のグラッド(そう長い幸運のためにできない、唯一の私たちの精力剤を刈り、そのストップループを入れていない、それまで、すべてが上昇に行くとあなたはどのような進捗状況で参照してください)。

ファイル:
 
が、以下はそのコードの一部です。
ファイル:
 

何が問題なのか、教えてください。4つの注文が連続して正常に修正されるが、4回目のティックで OrderModify error 1と書き込まれるようになる。

トレンドが反転した後、1次は問題なく、2次は正常に修正されるが、もう一度同じナンセンスが書かれる......。

ノーマライゼーションは役割を果たさない。

数日前から戦っています!

   for (x=0;x<OrT;x++)
   {
   if (OrderSelect(x,SELECT_BY_POS)==true)
    {
     if (OrderMagicNumber() == magic)
      {
       if (OrderType = OP_BUY)
       {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (High[m]-OrderOpenPrice() >= TS*Point)
        {
         if (OrderOpenPrice()+spread*Point != OrderStopLoss())
         {
          OrderModify(OrderTicket(),OrderOpenPrice(),                           //переводит SL в безубыток
          OrderOpenPrice()+spread*Point,OrderTakeProfit(),0,CLR_NONE);
          return;
         }
        }
       }
      }
     if (OrderMagicNumber() == magic)
     {
      if (OrderType = OP_SELL)
      {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (OrderOpenPrice()-Low[m] >= TS*Point)
        {
         if (OrderOpenPrice()-spread*Point != OrderStopLoss())
         {
           OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),dig),     //переводит SL в безубыток
           NormalizeDouble(OrderOpenPrice()-spread*Point,dig),
           NormalizeDouble(OrderTakeProfit(),dig),0,CLR_NONE);
           return;
         }
        }
       } 
      }
    }
   }

よろしくお願いします。

 
CYBOPOB:

何が問題なのか、教えてください。4つの注文が連続して正常に修正されるが、4回目のティックでOrderModify error 1と書かれるようになる。

トレンドの反転後、1回目の注文はOK、2回目の注文で修正するも、また同じエラーが表示される...。

ノーマライゼーションは役割を果たしません。

数日前から悩んでいます!

よろしくお願いします。

自分で(コードを書くときに)ルールを 考えるか、これらのルールがすでに考慮されている既製のソリューションを使うか、どちらかです。
 
CYBOPOB:

何が問題なのか、教えてください。4つの注文が連続して正常に修正されるが、4回目のティックでOrderModify error 1と書き込まれるようになる。

トレンドが反転した後、1次は問題なく、2次は正常に修正されるが、もう一度同じナンセンスが書かれる......。

ノーマライゼーションは役割を果たさない。

数日前から戦っています!

よろしくお願いします。

変更する前に、ストップオーダーの パラメーターが新しいストップと等しくないことを確認する必要があります。同等であれば、修正する必要はありません。したがって、エラー1。
 

配列の並べ替えについて。
私は2つの配列をソートしようとしています:最初の配列は昇順で(ArraySort(num_array);関数)、2番目は最初の配列に従って、最初の配列の5番目の要素が最初の位置に移動した場合、2番目の配列も同じ(最初の位置に5番目の要素)を行うようにします。
配列をまとめてソートするMQL関数があれば、リンクを教えてください。
リーズナブル。シュルキン

 
artmedia70:
変更する前に、ストップオーダーのパラメーターが新しいストップと等しくないことを確認する必要があります。同等であれば、修正する必要はありません。したがって、エラー1。


そうでしょう?

if (OrderStopLoss() != OrderOpenPrice()-spread*Point)

Artemさん、問題視しないで、コードを書いて ください、え?それとも、その手に持っているものを私にください、この苦しみを終わらせます...

 
CYBOPOB:

そうでしょう?

Artemさん、問題視しないで、コードを書いて ください、え?それとも、その手に持っているものを私にください、この苦しみを終わらせます...


そうではなくだから言ったじゃないですか。

変更する前に、ストップ注文のパラメーターが 新しいストップと 等しくない ことを確認する必要があります。同等であれば、修正する必要はありません。したがって、エラー1。

 

プロの方に質問です。機能を普遍化したい。この関数は、ある特徴(強気または弱気、サイズの一致、多分私が追加する何か他のもの)のバーがお互いに続く数をカウントし、この特徴に対応しない、すなわち別の方向に指摘したバーがある場合、カウンタはリセットされます。

以下は、あるバリアントで計算しているコードです。すなわち、ある特性のバーが上向きになっている場合、すなわち強気である場合です。

int LastCandlesType(int trend)
{
   int cnt,                            // Счётчик идущих друг за другом свечей с требуемыми признаками

   for (int i=i_AnyBarsToHistory; i>=1; i--)
   {
      if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)     // Если бар соответствует требуемым признакам..
          cnt++;                                                                     // .. прибавим 1 к счётчику

      if (Close[i] < Open[i])                                                        // Если бар, не соответствует основному признаку..
          cnt = 0;                                                                   // .. счётчик обнуляем
      
/*      if (i == 1)
      Print("i = ", i,"; cnt = ", cnt);*/
   }

   if (cnt == 3)                                                                     // Если 5 баров вподряд бычьи..
    return (REQUIRED_SEQUENTIAL_CANDLE_GOT);                                         //..Выходим из функции
}

この関数にトレンド パラメータを渡すと、その瞬間のメイントレンドと思われるものを渡す役割を果たすのですが、このパラメータを元に計算するようにするにはどうしたらよいでしょうか。

つまり、trend==down であればループ内の関数は今のようになり、trend==up であればループ内のOpen[i]Close[i] を入れ替えて、条件を満たすようにしました。なぜなら、その場合、バーの終値は 始値より低くなり、その差はマイナスとなるからです。