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

 
Snower: 黄色の線は、価格が突破すべき価格帯で、注文はスマイリーフェイスのローソク足で始まり、それ以前のものはすべて無視されます。

あなたのコードの一部では、価格チャネルchannel_topとchannel_bottomは、上記の定義されていますか?ピンバーの定義はどこにあるのでしょうか?

 
Vitaly Muzichenko:

返信

Artyom、あなたはそれをよく読んでいませんでした:TSはピンバーのブレイクアウトでのみ開く必要があり、それぞれ、あなたがピンバー(小さなボディと大きなシャドウ)を処方した場合、条件を満たすことができます。

Vitaly これに答えていたんです。

...そして以前のものはすべて無視...

以前からあったものがすべてピンバーだとすると、現行品のときに無視できるのは、ピンバーが一線を越えていたのでしょうか?

 
Sergey Likho:

MT4でiCustom機能はどのように扱われるのですか?ご存知の方、ぜひご返信ください


例えば、Strategy Testerでは Expert Advisorが1ティックごとにインジケータにアクセスします。

この関数が呼ばれると、インジケータがメモリに読み込まれ、ゼロバーからバーまでのすべての値を再計算した後、必要なオフセットで値を返します。

最初のティックで1バーの値を要求し、2番目のティックで2バーの値を要求すると、Expert Advisorは全履歴に対して2回インジケータを計算するのですか。


Expert Advisorがindicator1に アクセスし、indicator2に対してiCustomを設定している場合。指標1の 値を要求した場合、指標2は何回再計算されるのでしょうか?


もしかして、Strategy TesterとMT4ターミナルは、バーごとにインジケータの値を保存して、繰り返し要求されたときに再計算しないようにしているのでしょうか?

全ては指標の実現次第です。計算が正しい場合、インジケータは現在のバーだけを計算します - 他のバーは (rates_total-prev_calculate)>1 で計算されました。

 

配列にEMPTY_VALUE 値がある場合、iMAOnArrayの平均を取るにはどうすればよいですか?

 
Максим Дмитриев:

配列にEMPTY_VALUE 値がある場合、iMAOnArrayの平均を取るにはどうすればよいですか?


なるほど!平均化サンプルの中の少なくとも1つの値がEMPTY_VALUE であれば、その時点のiMAOnArrayの値もEMPTY_VALUEに なりますね。

 

皆さん、ごきげんよう。EAをテストしています。これでトレードするわけではなく、ある程度の規則性を確認する程度です。分足のローソク足で注文を出し、SLで決済されると、SLで終値で再度買い注文を出します。


int start()                                             
{
if(Bid == iOpen(NULL,PERIOD_M1,0))
if ( G != Minute() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,Y10,123 );
G  =  Minute();
}
////*******   Если в списке закрытых ордеров есть ордер закрытый по СЛ - открыть другой ордер
int Счетф=0,  Номерф=OrdersHistoryTotal()-1;
for( ; Номерф>=0; Номерф--)
{
if(!OrderSelect(Номерф, SELECT_BY_POS, MODE_HISTORY)) continue;
if(OrderProfit()>=0) break;
Счетф++;
if(Счетф>0)
if(TimeCurrent()==OrderCloseTime())
OrderSend(Symbol(),OP_BUY,1,Ask,1,Bid-400*Point,Bid+200*Point,Y11,123 );
}
return;
}

問題は...複数の注文が1ティックで決済され、最後の注文がTPで決済された場合、私が必要とするBUY注文が開かれないのです。これは、最後の注文がSLによってではなく、TPによって閉じられたとプログラムが考えるからです。ここでは、そのような状況の一例を紹介します。

13:38:15.859 2008.01.02 15:01:46 Tester: Stop loss #232 at 1.46566 (1.46560 / 1.46562)

13:38:15.859 2008.01.02 15:01:46 Tester: Stop loss #233 at 1.46566 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 1 5:01:46 Tester: Take profit #302 at 1.46566 13:38:15.859 2008.01.02 15:00:46 テスター:Stop loss #1.46562 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:02:00 MACD Sample EURUSD,M1: open #347 sell 0.10 EURUSD at 1.46570 sl: 1.46972 tp: 1.46562.46372 ok
SL注文で同じティックでクローズした直後に1ティックでBUY注文を出すには、どのような言語構成にすればよいのか説明していただけませんか?

ありがとうございます。

 

こんにちは。

もう、頭を悩ませています。double配列の中に、ある価格があるかどうかを調べるには?

テスト用にこんな風に書きました。


double prmas[5] = {11,22,33,44,99};

ArrayBsearch(prmas,OrderOpenPrice(),WHOLE_ARRAY,0,MODE_ASCEND));


スクリプトは問題なく11, 22, 33, 44を見つける(端末にはそのような命令がある)。しかし、スクリプトが例えば価格45を処理した場合、まだ3(配列内の価格44の位置)が表示されています。

もし配列の中に処理中の注文の価格があればtrueを返し、なければfalseを返します。でも、そのような機能はまだ言語にはないんです。

 

こんにちは。ファイルが作成されない、データが書き込まれない理由を教えてください。

   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   string file_name=terminal_data_path+"\\MQL4\\Files\\VolC(Symbol(),Period())";
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
YarTrade: こんにちは。ファイルが作成されず、データが書き込まれない理由を教えてください。

Files フォルダをよく調べてみてください!!!常にサンドボックス=ファイルフォルダに書き込む .この方法で試してみてください。

   string file_name=VolC(Symbol(),Period());  // А кто такой ВолК = VolC  ???
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
STARIJ:

Files フォルダをよく調べてみてください!!!常にサンドボックス=ファイルフォルダに書き込む .こんな風に試してみてください。


VolC - そのようにファイル名を付けました。ファイル名は必要ないのでしょうか?