[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 512

 
LazarevDenis:
mql4でいくつかのテキストをファイル、例えば*.txtに書き込み、その後取引のためにこのデータを取得することが可能かどうか助言してください。 アイデアは、EAがそれ自身の取引を学習することで、価格が数バーにつき100*ポイント以上変化したとき、EAはこれらの値を記憶して、それらを使用しようとします(注文を開くための指標値+/- n%)。 これはEAにも実装できましたが、メタトレーダーを終了するとすべての変数値がゼロにリセットされているように思われます。
グローバル変数が 使用できます。
 
どなたか、私のEAをテストして、その長所と短所を教えていただけませんか?
ファイル:
 

最後の10ポジションがマイナスでクローズされた場合、あるアクションを実行する関数を書くのを手伝ってください。

ありがとうございました。
 
Kreol:
はい、はい、わかりました.しかし、苦労して稼いだお金を手放す前に、必要なスクリプトがパブリックドメインで入手できないかどうか確かめたい
データベースのスクリプトは、ドッグイータードッグ並みに大きい。質問が間違っています。ユニバーサルスクリプトは、せっかく作ってもらっても、不便で捨ててしまうでしょう。
スクリプトは通常、シンプルで統一された動作を行うように設計されています。スクリプトのセットを使用し、それぞれが異なるホットキーにバインドされるようにするのが最適です。
例えば、こんな感じです。

スクリプト
キー
オープンバイスクリプトCtrl+B
Sellを開くためのスクリプトCtrl+S
スクリプトを反転させるCtrl+R
スクリプトを閉じる
Ctrl+C

といった具合に。
リバーススクリプト site:mql4.com のような google のリクエストで検索すれば、データベース内の対応する既製のスクリプトを見つけることができます。

 
nuan:

例えば、直近の10ポジションがマイナスで決済された場合、ある動作をするような関数を書きたいのですが。

ありがとうございました。

ループの中で損切りしたラストオーダーの数を計算するのは難しいことではありません。しかし、不明確なアクションを実行するようなコードを書くにはどうしたらいいのでしょうか?
 
カウントするコードが必要
 
こんにちは!ここで質問なんですが・・・。入力条件や補助関数、extern doubleのような外部変数が豊富なことがExpert Advisorの速度を低下させているのでしょうか? テスターでは謎のままですが...。最初のロボットはコード内にすべてを隠したもので、すべてがextern doubleであるロボットよりドローダウンが大きい...どちらも同じ変数パラメータを持っているが。(彼らも同じです)
 
Shniperson:
こんにちは!ここで質問なんですが・・・。入力条件や補助関数、extern doubleなどの外部変数が豊富なため、EAが重くなることがあるのでしょうか? テスターでは謎のままですが...。最初のロボットはコード内にすべてを隠したもので、すべてがextern doubleであるロボットよりドローダウンが大きい...どちらも同じ変数パラメータを持っているが。(も同じです)。


変数の値をもう一度確認してください。もしかしたら、変数の値が違っていて、最初のものをコンパイルするときに、互いに異なる動作をする可能性があります。

それとは別に、検索-ダウンロード-WinMergeU.exeで、このプログラムと比較してください。

 

https://www.mql5.com/ru/code/9274 からダウンロードしました。

ここからダウンロードしたスクリプトで、あらかじめ設定した利食いと損切りを自動的に設定するのですが、価格に従って浮動し始めます。何が問題で、どのように設定すれば固定になるのか教えてください。

 
nuan:
を計算するコードが必要です。


これは難しいことではありません。サブプログラムを書く。

// этот код будет работать корректно только если в истории отсутствуют отложенные ордера.
int SchLossOrders(){
  string SMB=Symbol();
  int Sch=0;
  int i;
  for (i=OrdersHistoryTotal()-1;i>=0;i--){
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { Print("Ошибка ",GetLastError()," при выборе ордера");}
    else {
      if(OrderProfit()<0 && (OrderType()==OP_BUY || OrderType()==OP_SELL)){
        Sch++;
      }
      else{
        return(Sch);
      }
    }
  }
 return(Sch);     
}

EAの冒頭で私たちはこう書いています。

if(SchLossOrders()>=10){
  // 10 последних сделок были убыточными - выполняем какое-то действие
}