記事についてのディスカッション - ページ 2

 
Alexander:

TestDoEasyPart56 で、関数の一番最後にある void OnInitDoEasy() 関数の中に、次のコードを挿入しました。

D'2020.12.11 10:00'から現在までの過去の注文の コレクションを取得します。そして、私はそれらのどれも得ませんでした。

注文はこのコードによって与えられなかった。

Print(list_positions.Total());のところでは、"0 "が表示される。

OnInitDoEasy()はこの中で動作することを意図していません。ライブラリを適切に初期化するには、この関数が必要です。OnTick での動作
 
Artyom Trishkin:
OnInitDoEasy()は、その内部で動作することを意図していない。この関数は、ライブラリを適切に初期化するために必要です。onTick での動作

onTick()に挿入しても何も変わらない:

//| エキスパート・ティック機能|
//+------------------------------------------------------------------+
void OnTick()
  {
//--- ライブラリでのNewTickイベント処理
   engine.OnTick(rates_data);

//--- テスターで作業する場合
   if(MQLInfoInteger(MQL_TESTER))
     {
      engine.OnTimer(rates_data);   // タイマー操作
      engine.EventsHandling();      // イベントを扱う
     }
   
//--- 後続フラグがセットされている場合
   if(trailing_on)
     {
      //TrailingPositions(); // 後続ポジション
     // TrailingOrders(); // 保留注文のトレール
     }
     CArrayObj* list_positions=engine.GetListHistoryOrders();
           // list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_SYMBOL,Symbol(),EQUAL);
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_TIME_CLOSE,D'2020.12.10 10:00',MORE);
            //--- 利益がゼロより大きいポジションを選択する
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_PROFIT,0,MORE);
            if(list_positions!=NULL)
              {Print("OK1");
               //--- リストを利益順に並べ替える 
               //list_positions.Sort(SORT_BY_ORDER_PROFIT);
               list_positions.Total();
               Print(list_positions.Total());
               //--- 最も高い利益を上げたポジションのインデックスを取得する。
               int index=CSelect::FindOrderMax(list_positions,ORDER_PROP_PROFIT);
               if(index>WRONG_VALUE)
                 {Print("index= ",index);
                  COrder* position=list_positions.At(index);
                  if(position!=NULL)
                    {
                     //--- 最も利益が大きいポジションのチケットを取得し、そのチケットでポジションを決済する。
                     Print("OK");
                     Print(engine.GetListDeals());
                    }
                 }
              }
  }
 
Alexander:

onTick()に挿入しても何も変わらない:

例題の各EAには、最も利益の高いポジションを 選択して決済 するコードブロックがあります。あなたはそれを類推することができます。携帯からは見ることすらできません。
 
Artyom Trishkin:

このメダルを手にすることを止められないのはなぜか?

私には何の権利もない。君にあげよう。あなたはそれに値する)

 
Aleksey Mavrin:

私は何も主張しない。君にあげよう。君はそれに値する)

ありがとう。私は欲しくない。他の人に任せます。

 

残念なことですが、MT5プログラミング・コミュニティには、コードの 相互改善や、公開作品のヘルプ作成という強い側面がありません。例えばヘルプを書く人は、常にコードの理解を深めています。

それがベストなのかもしれない!DoEasyサイクルの記事はまだ全部読むと思う。私は記事34に達している、私はそれがまだ機知に富んだコボイであることを教えてあげます))。Pohodu読書は、それが建設の図がないことを悪いと思うが、このソフトウェア アートが、私はあなたが少し考える必要があることを最高のために多分考える。


記事からの結論は、特にほとんどのトレーダーnovadaisアマチュアプログラマのために、非常に多くのです。ありがとうございました! 私はより多くがあることを願っています。

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 

くそっ、なんでみんなこの証明書を要求し続けるんだ?SBにはヘルプがある。メソッドの具体的な名前を忘れたときだけ使うんだ、クラスの説明を開くより少し早いからね)。

SBの時系列には、バッファサイズを変更するメソッドがある。このメソッドがないと時系列での作業が 制限され、ヘルプにもデフォルト値についても何も書かれていない。

もしコードがあるのなら、なぜこのような欠陥のあるヘルプがあるのだろう。

いずれにせよ、本格的に使い始めるには、インターフェイスから始まってさらに先のコードに目を通す必要がある。

だから、ヘルプでArtyomの気を散らさないで、彼にできることをさせてあげよう)。

 
Aleksey Mavrin:

くそっ、なんでみんなこの証明書を要求し続けるんだ?SBにはヘルプがある。私はメソッドの具体的な名前を忘れたときだけ使う。クラスの説明を開くより少し早い)。

SBの時系列には、バッファサイズを変更するメソッドがある。このメソッドがないと、時系列での作業が 制限され、ヘルプにもそのことは書かれていないし、デフォルト値についても書かれていない。

もしコードがあるのなら、なぜこのような欠陥のあるヘルプがあるのでしょうか?

いずれにせよ、本格的に使い始めるには、インターフェイスから始まり、さらに先のコードに目を通す必要がある。

だから、ヘルプでArtyomの気を散らさないで、彼にできることをさせればいいんだ)

この作業はまだ大きく、証明書とgitHubへの登録が必要だ。