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

 
Noterday:

私は、オープンするポジションのロットサイズを計算するために、EAに新しいブロックを挿入しました。考え方は次のとおりです。

1.ストップは、売りポジションの場合は当日の高値に、買いポジションの場合は当日の安値に設定されます。

2.注文の開始条件が成立すると、このロット計算ブロックの実行が開始されます。その日の高値/安値までの距離をポイントで計算し、0.1から始まるロットをループして必要なロットを見つける(ストップが発動した場合は5%)。

しかし、そんなセリフが私の日記に登場する。

2011.01.30 16:59:47 TestGenerator: 不一致データエラー (2011.01.13 14:45 のボリューム制限 1107 を超えました)

このブロックをオフにすると、すぐにすべてがOKになります。どこが間違ってるんだろう?教えてください。

以下は、コードそのものです。

テスターのメッセージがあなたのコードに関連している可能性は低いです。

引用アーカイブのすべてのタイムフレームを再計算するために、何度も試してみてください。

メッセージには、14:45に出来高1107に達したとあるが、24:00まで取引が続いたので、全く不可能である。

しかし、この誤差はごくわずかなものです。

 
Saltan:

インクルードファイル(*.mqh)をコンパイルしようとすると、エラー '\end_of_program' - no function defined が発生します。何が問題で、どうすれば解決するのか?

extern double Lots = 0.0;
extern int Percent = 0;
extern int StopLoss = 100;
extern int TakeProfit = 40;
extern int TrailngStop = 100;

int Level_New;
int Level_Old;


そんなこともあるし、それが普通なんです。例えば、私のVariables.mqhでは、エキスパートの外部変数とグローバル変数が 指定されています。コンパイル時には、' \end_of_program' - no function defined, no end in program, no function definedのような記述がありますが、同時に、エキスパート自体をコンパイルすると全てOKです - 0 errors, 0 warningsです。(*.mqh) - 個別にコンパイルしないでください。エキスパートアドバイザー自体をコンパイルする際、コンパイラはそのすべてのインクルードを一緒にして、エラーがあるかどうか、エラーがないか、などを判断します。:-))) だから、すべてが正常なのです。自分でコンパイルしてみる...

追伸:他のインクルードをコンパイルする際に、グローバル変数が定義されていないとコンパイラに表示されることがあります。もちろん、全く別のインラインで持っていれば、定義する必要はありません。挿入歌の順番に注目...ある変数が1つのinludeで定義され、別のinludeで使用される場合、最初のinludeは2番目の前に置かれなければなりません、さもなければコンパイル中にエラーが発生します - ある変数が定義されていません、一般にすべてのグローバル変数は外側のinludeで定義されます。あるいは、これらの変数を使用するものであれば、他のものでも定義することができます。なんとなく...かなり曖昧ですが、理解できるはずです。ぜひお試しください。

 
DhP:

テスターのメッセージがあなたのコードに関連している可能性は低いです。

引用アーカイブのすべてのタイムフレームを再計算するために、何度も試してみてください。

メッセージには、14:45にボリューム1107に達したとありますが、24:00まで取引が続いていたので、全くありえないことです。

しかし、この誤差はごくわずかなものです。

さて、このブロックをコメントアウトすると、テスターではすべてうまくいきます。つまり、このブロックにエラーがあるのです...。
 
100yan:
問題なし...しかし、コード中のTFの現在値はどのように決定するのでしょうか?

ピリオド() があると便利
 
Sergey_Rogozin:

STUDYブックの表紙を四方八方から見たが、やはり何もわからない・・・))

このように書かれているのをあちこちで見かけます。

Price = OrderOpenPrice()を取得して、さらに処理を行い、Stopを設定したいのですが、以下の書き方は妥当でしょうか?

私の場合はうまくいくのですが、これは許容範囲なのでしょうか?

あなたのセリフは、最初のセリフと同じように有効です。

この方法で、未決済注文に関するあらゆる情報を得ることができます。

ただし、開封確認時に1回のみ。

https://docs.mql4.com/ru/trading/OrderSend をご覧ください。

 
Noterday:
さて、このブロックをコメントアウトすると、テスターではすべてうまくいきます。つまり、このブロックにエラーがあるのです...。
    double DistanceToHighDay = MathAbs(HighDay-Ask)*10000;
    double DistanceToLowDay  = MathAbs(Bid-LowDay)*10000;

最も可能性が高いのは、当日のデータの取り扱いで、分単位で量が一定でないことです。

とテスターで警告される。
 
HighDayとLowDayの変数はこのブロックだけでなく、プログラム内の他の場所でも使われているので、関係ないと思います。そのブロックのアルゴリズムは正しいのでしょうか?
 

誰かもっといい仕事してくれないかな?

1.その日の高値で売りの位置にストップがかかる。

2.そして、現在の価格から その日の高値までの距離をpips単位で計算します。

3.この距離が0.1ロットでいくらになるかを$で計算し、それが預金の%でいくらになるかを計算します。5%未満になる場合は、0.2ロット分、5%を超えるまでカウントします。

そして、これが必要なロットサイズになります。

私のコードはなぜかうまくいきません...すべて正しく書かれているようですが。

 

WHO KNOWS?

ボリンジャーで、"Previous Indicator's Data "に適用する、と書いてあるものをプログラムで参照するにはどうしたらいいでしょうか? apply_priceフィールドに何を入れればいいでしょうか?

しゃい

 

皆さん、ごきげんよう。Question: CheckEventsを動作させるにはどうしたらいいですか?Events ファイル(Komposter 製)は、include ディレクトリにあります。EventsExpert.mq4 に例があります。

CheckEvents( MagicNumber );

        if ( eventBuyClosed_SL > 0 )
                Alert( Symbol(), ": Buy-позиция закрыта по СтопЛоссу!" );

でも、Alertは必要ないんです。成行注文がストップロスで終了したら、保留中の 注文を削除してほしいのですが。

CheckEvents( Magic==0 );
    
   if (eventBuyClosed_SL > 0)
   ??????????? 
        
   DELETE("Buy Stop");

Alertの代わりに何を入れればいいのでしょうか?この機能が目的に合っていれば