MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1547

 
SGarnov:

通貨ペアの連続したストップ数。

履歴を把握するために、Expert Advisorは最初、注文にIDを付けていたのですが、履歴から見つけられなかったので、OrderMagikNumber()で検索するのかと思ったのです。もしかして、ヒストリーで、EAが異なる通貨ペアのストップを「見て」止めてしまうから? 1つの通貨ペアで動作させた試しがないので、無駄になってしまうのでは?

また、ソースコードを公開しなければならないのでしょうか?必要なのは「履歴からストップトレードを検索して、新たに置いたテイクに追加させる」ことを修正すること。

また、1つのペアに2つ以上のストップがある場合、このペアのEAの作業をどのように再開するのでしょうか?

ついでにOrderMagicNumber()はEAと手動発注をマジコン無しで設定する
 
MakarFX:

また、あるペアで2つ以上のストップが連続した場合、そのペアのEAをどのように再稼働させるのですか?

自分でセットした新しい振り子でやっています。
 
SGarnov:
自分で立てた新しい振り子
過去の損失分のポイントをそれに加算するのか、それとも新たな損失計算のサイクルにするのか?
 
MakarFX:
過去の損失や新しい損失サイクルのポイントを追加する必要がありますか?

いいえ、前のものを追加する必要はありません。EAが動作し始めたときだけ追加します。

Expert Advisor は、Stop Loss 係数が 2 の場合、常に 4 種類のイベントのみを実装します。

A) テイクプロフィット+1ストップで、Expert Advisorの動作が停止 します。

B) +1ストップで、EAの動作が停止 します。

C)テイク+2停止 EAが動作しなく なる

D) 3 停止 EAが動作しなくなる

 
SGarnov:

こんにちは。EAに協力してください。ストラテジーによれば、ストップがトリガーされた場合、EAはIDで履歴から次の設定された持ち点に(ポイント数)
を追加するはずですが、なぜか実行されないのです。

コードのどこがおかしいのでしょうか?

最低限の利益を確保したいのであれば、ストップとテイクプロフィットにスプレッドを加えて、ある程度の値にしておけば十分でしょう。正確には、算術級数*スプレッド(スプレッドが何倍になって損するか)の量です。ただ、日次のレンジよりはるかに大きくは増やさないでください。

最良の選択肢は、OrderMagicやCommentで、ストップの初期値をポイントで保存するか、連続失敗の回数を保存することです。一般的に、Expert Advisor はすべての注文/ポジションを記憶し、端末(およびサーバ)に不必要な問い合わせをしないようにする必要があります。

 
Maxim Kuznetsov:

最小限の利益で成立させるためには、ストップとテイクの両方にスプレッドを付ければよいのです。より正確には、算術級数*スプレッド(どれだけスプレッドが広がるか、失われるか)の量です。ただ、日次のレンジよりはるかに大きくは増やさないでください。

最良の方法は、OrderMagicやCommentで、ストップの初期値をポイントで保存するか、連続した失敗の回数を保存することです。一般的に、Expert Advisor はすべての注文/ポジションを記憶し、端末(およびサーバ)に不必要な問い合わせをしないようにする必要があります。

コードについては、そのはずなのですが、履歴に見当たりません。 助けていただけませんか?
 

地域の皆様のお力をお借りしたいのですが...。
MQL5グローバルオブジェクトを正しく宣言し、作成する方法は?

このようにすれば

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

OnTick()の行でコンパイラが文句を言います: 'NB_M1' - 未宣言の識別子。

OnInit()の前にグローバル宣言を挿入した場合。

CIsNewBar* NB_M1;

は、エラーなくコンパイルされ、エキスパートが動作します。グローバル宣言時とOnInit()時の2回、オブジェクトが生成されているようです。
しかし、コンパイラは このような警告を 出します。

NB_M1' の宣言でグローバル変数を隠す → OnInit()の1行につき、です。

see previous declaration of 'NB_M1'

OnInit()でローカル変数(関数内)を作成し、同名のグローバル変数を隠蔽するということでしょうか。
また、その場合、このローカル変数を別の関数 OnTick() でどのように「見る」ことができるのでしょうか?




 
SGarnov:

いいえ、前のものを追加する必要はありません。EAが動作し始めたときだけ追加します。

ストップロスの 値が2の場合、Expert Advisorは常に4つのオプションのみを実装します。

A)取る

B) テイク+1ストップ

C)テイク+2ストップ

D) 3ストップ

アドバイザーが動かなくなる

なるほど、試してみます。
 

このメッセージが誰に宛てたものなのか、まだわかりません。不透明なパネルが作れない。OBJ_BITMAP_LABEL, OBJ_RECTANGLE_LABEL 関数は、オブジェクトの装飾や新規作成用に設計されています。しかし、透明性を確保しないという選択肢はありません。私の勉強不足なのか、作り手の欠点なのか。フォアグラウンドで作成されたオブジェクトは、コントロールパネルを通して表示されます。その逆も可能ですが、プロシクに過大な負荷をかけることになります。どなたか方法をご存知の方がいらっしゃいましたら教えてください。

 
MakarFX:
なるほど、やってみます。

私のソースコードを簡単に説明すると、私が説明した問題を除いては、動作するロジックがあります。