//--- buffers (массивы под буферы индикатора)//--------------------------------------------------------------------double RSI[]; // буфер под RSI//--------------------------------------------------------------------double MAr1_fast[]; // буфер под быструю МАdouble MAr2_slow[]; // буфер под медленную МАdouble MAr2_slowColor[]; // буфер под цвета медленной МА//--------------------------------------------------------------------double MAr3_slow_glob[]; // буфер под глобальную медленную МАdouble MAr3_slow_globColor[]; // буфер под цвета глобальной медленной МА//--------------------------------------------------------------------
PlotIndexSetString (4, PLOT_LABEL, "MA (" + IntegerToString(MA_slow_glob_period) + "), SMA");
I.e. データウィンドウに設定したテキストではなく、バッファの代わりにインジケータの名前だけが表示されます。線自体は引かれていて、それは当然のように多色であるが。 ナンバリングシフトに仕掛けがあるのでは?例えば、コードの上の方で、最後の行を#propertyディレクティブで宣言すると、以前から4つのバッファが使われているので、インデックスが5ではなく、4になってしまうのはなぜでしょうかね。また、#propertyで宣言した場合の行番号と、OnInitで配列とリンクした場合のバッファ番号には、全く関係がないのでしょうか?
I.e. データウィンドウに設定したテキストではなく、バッファの代わりにインジケータの名前だけが表示されます。線自体は引かれていて、それは当然のように多色であるが。 ナンバリングシフトに仕掛けがあるのでは?例えば、コードの上の方で、最後の行を#propertyディレクティブで宣言すると、以前から4つのバッファが使われているので、インデックスが5ではなく、4になってしまうのはなぜでしょうかね。また、#propertyで宣言した場合の行番号と、OnInitで配列とリンクした場合のバッファ番号には、全く関係がないのでしょうか?
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
入力パラメータの種類を知るにはどうしたらよいですか?
そのような呼び出しがまだコードになかった場合、コンパイラ自体は、テンプレート関数の呼び出しの瞬間に型を置換し、コンパイラは、別の関数のコピーを作成し、それ自体を設定します - よく、論理的にかのように - テンプレート
このような関数でどのように型を定義するかという質問であれば
typenameUPD: 上記の例に、パラメータタイプprintersを追加しました。
2020.09.16 18:58:21.679 tst (EURUSD,M5) int myfunc<int,int>(int,int)である。
2020.09.16 18:58:21.680 tst (EURUSD,M5) val1 = 2, typename = int
2020.09.16 18:58:21.681 tst (EURUSD,M5) val2 = 3, typename = int
2020.09.16 18:58:21.681 tst (EURUSD,M5) 5
2020.09.16 18:58:21.681 tst (EURUSD,M5) int myfunc<double,double>(double,double)
2020.09.16 18:58:21.681 tst (EURUSD,M5) val1 = 10.0, typename = double
2020.09.16 18:58:21.681 tst (EURUSD,M5) val2 = 30.0, typename = double
2020.09.16 18:58:21.681 tst (EURUSD,M5) 40
UPD: このサンプルに__FUNCSIG__ を追加しました。
午後
MQL5でインジケータを作成 する際、不思議なことに直面します(別サブウィンドウにインジケータ、4行)。
初期バッファの記述は以下の通りです。
次はOnInitです。
基本的には、最初の2本は単色、次の2本は2色(キンクで色が変わる)です。
バイカラーはDRAW_COLOR_LINEの描き方によるものです。
質問:1行目(上記コードのバッファ2と3)は完全に描画され、OnInitでそのために書かれたコードはすべて動作します。
I.e. データウィンドウに設定したテキストではなく、バッファの代わりにインジケータの名前だけが表示されます。線自体は引かれていて、それは当然のように多色であるが。2行目は何らかの理由で表示され、例えば線は動作しません。
ナンバリングシフトに仕掛けがあるのでは?例えば、コードの上の方で、最後の行を#propertyディレクティブで宣言すると、以前から4つのバッファが使われているので、インデックスが5ではなく、4になってしまうのはなぜでしょうかね。また、#propertyで宣言した場合の行番号と、OnInitで配列とリンクした場合のバッファ番号には、全く関係がないのでしょうか?
上記のコードのどこが問題なのか、アドバイスをお願いします。DRAW_COLOR_LINE...描画メソッド
を使って、少なくとも2本の線を描画するインジケータの例をどなたか見つけていただけるかもしれません。
もう一つ関連する質問ですが、カラフルなラインバッファーはどのように結ばれているのでしょうか?つまり、カラーバッファに値を入れたら、この色を使って他のバッファから線に色をつけるべきだということを、コンパイルされたコードはどうやって知ることができるのでしょうか?
午後
MQL5でインジケータを作成 する際、不思議なことに直面します(別サブウィンドウにインジケータ、4行)。
初期バッファの記述は以下の通りです。
次はOnInitです。
基本的には、最初の2本は単色、次の2本は2色(キンクで色が変わる)です。
バイカラーはDRAW_COLOR_LINEの描き方によるものです。
質問:1行目(上記コードのバッファ2と3)は完全に描画され、OnInitでそのために書かれたコードはすべて動作します。
I.e. データウィンドウに設定したテキストではなく、バッファの代わりにインジケータの名前だけが表示されます。線自体は引かれていて、それは当然のように多色であるが。2行目は何らかの理由で表示され、例えば線は動作しません。
ナンバリングシフトに仕掛けがあるのでは?例えば、コードの上の方で、最後の行を#propertyディレクティブで宣言すると、以前から4つのバッファが使われているので、インデックスが5ではなく、4になってしまうのはなぜでしょうかね。また、#propertyで宣言した場合の行番号と、OnInitで配列とリンクした場合のバッファ番号には、全く関係がないのでしょうか?
上記のコードのどこが問題なのか、アドバイスをお願いします。DRAW_COLOR_LINE...描画メソッド
を使って、少なくとも2本の線を描画するインジケータの例をどなたか見つけていただけるかもしれません。
もう一つ関連する質問ですが、カラフルなラインバッファーはどのように結ばれているのでしょうか?つまり、カラーバッファに値を入れたら、この色を使って他のバッファから線に色をつけるべきだということを、コンパイルされたコードはどうやって知ることができるのでしょうか?
マッピングは、バッファとは異なる番号が振られています。
これでうまくいくはずです。
皆さん、こんにちは。
ストップロスを変更する関数を作りました。しかし、それが動作すると、EURUSD,H1: OrderModify error 130と表示されます。
そして、その価格はストップロスを設定すべき場所からは程遠い。
以下はその機能です。
void open_bu(string walpa, int op) { bool err; int spred=(int)MarketInfo(walpa,MODE_SPREAD); double point=MarketInfo(walpa,MODE_POINT); int digits=(int)MarketInfo(walpa,MODE_DIGITS); for(int is=OrdersTotal()-1; is>=0; is--) { if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES) && OrderSymbol()==walpa) { if(OrderType()==op && NormalizeDouble(OrderStopLoss(),digits) < NormalizeDouble(OrderOpenPrice()+spred*point, digits) ) { err=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+spred*point, digits), OrderProfit(), 0, clrNONE); if(!err) error(GetLastError()); } if(OrderType()==op && (NormalizeDouble(OrderStopLoss(),digits) > NormalizeDouble(OrderOpenPrice()-spred*point, digits) || OrderStopLoss()==0)) { Print(walpa," ",spred," ",point," ",digits," ",NormalizeDouble(OrderOpenPrice()-spred*point, digits)); err=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-spred*point, digits), OrderProfit(), 0, clrNONE); if(!err) error(GetLastError()); } } } return; }フラクタルの3本の棒のうち、棒の番号を求める関数を書きました。オンラインチャートでは、正しく検出されているようです。しかし、テスターでの目視テスト では、それは嘘になります。どなたかプロの方にコードを見ていただき、エラーを発見していただけませんか?
一番ありがたいですね。
こんにちは。テスターで1ヶ月後にインジケータが動かなくなるようにするには、どのようなコードを追加すればよいですか?すなわち、私はすべてOKを書きましたしかし、バックテストを行うと、再び動作します。(mgl4)
こんにちは。
開店 日の注文終了サイクルに条件を付けて、金曜日に開店した注文が終了しない ようにしたかったのです。
こんにちは。テスターで1ヶ月後にインジケータが動かなくなるようにするには、どのようなコードを追加すればよいですか?すなわち、私はすべてOKを書きましたしかし、バックテストを行うと、再び動作します。(mgl4)
このコードはOnInitではなく、OnTick()に記述する必要があります。
こんにちは。
注文開始 日の注文終了サイクルに条件を付けて、金曜日に開いたものが終了しない ようにしたかった。
この方法で試してみてください。
for(int is=OrdersTotal()-1; is>=0; is--) { if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES)) { if ((OrderMagicNumber()==Magic) && (TimeDayOfWeek(OrderOpenTime())<5)) { if (OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE); if (OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE); if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error, " ",Symbol()); } else error=0; } else Print("NoMagic ", OrderMagicNumber()); // for Debug } else Print( "Error when order select ", GetLastError()); }