MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 55 1...484950515253545556575859606162...1953 新しいコメント Vitalie Postolache 2017.01.04 17:33 #541 trader781: クラス、配列、マクロ、Windowsのライブラリからのインポートはまだ使っていません。すべて順調です。 配列でやってはいけなかったんですね。配列は便利です。そして、構造もそうです。あとは、そうですね、よほど複雑なプロジェクト でなければ、まったく使わないかもしれません。 Vitaly Muzichenko 2017.01.04 18:04 #542 Vitalie Postolache: アレイだともったいない。配列は便利です。そして、構造もそうです。あとは、そうですね、プロジェクトが複雑でなければ、全く使えないということはありません。 配列については、非常に便利であり、配列なしでは賢明なプログラムを書けないことが多いことに同意します。構造体...私はウェブプログラムでクラスを使いたいのですが、特にプロジェクトが 大きい場合、本当に便利ではありませんし、通常の1ページのExpert AdvisorでMQを使うのは好きではありません。私は、OOPですべてのデータをopen/closedで書き、使い始めてすべてを削除し、手続き型で書き直して使い、すべてを1つのループで書きました。だから、授業はちょっと嗜好品なんです。 Vitalie Postolache 2017.01.04 18:10 #543 Vitaly Muzichenko: 配列はとても便利で、配列なしでは賢明なプログラムを書けないことがよくありますね。構造体...私はウェブプログラムでクラスを書きますが、特にプロジェクトが大きい場合、それがないと本当にまずいし、便利ではありません。私はOOPですべての開閉データを書き、使い始めてすべてを削除し、手続き型に書き換えて使い、すべてを1つのループで書きました。だから、授業は愛好家のためのものです。 ふむふむ。授業と何の関係があるんだ?ストラクチャーとクラスは少し違うものです。構造について書きました。MqlRatesなどなど・・・。 Vadim Podoprigora 2017.01.04 21:15 #544 未決済注文の最大数を追加するのを手伝ってください(MAXORders) // extern string rem2="===ロット数==="; extern double _Lots0_1 = 0.1; //基本レベル(1次の場合) extern double _Lots0_2 = 0.1; //ベースレベル(2次用) // extern string rem3="===追加パラメータ==="; extern int _TakeProfit1_Proc = 50; //1次の利益を得るリスクの割合extern int _SpaseFromMaxMin = 1; //上/下からのオフセット// extern string rem4="===ブレークイーブンパラメータ==="; extern bool _IsStopLoss_0 = false; //損益分岐レベルの使用を有効にするextern int _StopLoss_0_From = 0; //損益分岐点からのオフセット(ポイント単位) extern int _StopLoss_0_Level = 15; //損益分岐点// extern string rem5="===トレーリングストップパラメータ==="; extern bool _IsTrailingStop = false; //トレーリングストップを有効にしますbool _IsTrailingStopProfit = true; //損益分岐点からのトレーリングストップを有効にする// extern int _TrailingStopProfit_From = 0; //損益分岐点からのオフセット(ポイント単位) extern int _TrailingStopLevel = 15; //トレーリングストップレベルextern int _TrailingStopStep = 5; //トレーリングストップ移動ステップ// extern string rem6="===ツール設定==="; extern string _Symboll = ""; //機器の記号名:""-現在の記号extern int _Timeframe = 0; //期間:0-現在のチャートの期間int_Digitss; //価格の小数点以下の桁数double _Points; //見積もり通貨でのポイントサイズextern int _Slippage = 2; //スリッページextern int _Magic1 = 1281; // EA注文の一意の数(1次) extern int _Magic2 = 1282; // EA注文の一意の数(2次) // extern string rem7 ="===MA1インジケーターパラメーター==="; extern int _MA1_Timeframe = PERIOD_D1; //期間:0-現在のチャートの期間extern int _MA1_Period = 20; //移動平均を計算するための平均期間extern int _MA1_Shift = 0; //価格チャートに対するインジケーターのシフトextern int _MA1_Method = 0; //平均化方法:0-SMA、1-EMA、2-SMMA、3-LWMA extern int _MA1_Applied_Price = 0; //使用価格:0-クローズ、1-オープン、2-高、3-低// extern string rem8 ="===MA2インジケーターパラメーター==="; extern int _MA2_Timeframe = PERIOD_H4; //期間:0-現在のチャートの期間extern int _MA2_Period = 20; //移動平均を計算するための平均期間extern int _MA2_Shift = 0; //価格チャートに対するインジケーターのシフトextern int _MA2_Method = 0; //平均化方法:0-SMA、1-EMA、2-SMMA、3-LWMA extern int _MA2_Applied_Price = 0; //使用価格:0-クローズ、1-オープン、2-高、3-低// extern string rem9="===ボリンジャーバンドインジケーターパラメーター==="; // extern int _BB_Timeframe = 0; //期間:0-現在のチャートの期間extern int _BB_Period = 20; //メインインジケーターラインの平均期間extern int _BB_Deviation = 2; //メインラインからの逸脱extern int _BB_Bands_Shift = 0; //価格チャートに対するインジケーターのシフトextern int _BB_Applied_Price = 0; //中古価格:0-閉じる// extern string rem10 ="===ZigZagインジケーターパラメーター==="; // extern int _ZZ_Timeframe = 0; //期間:0-現在のチャートの期間extern int _ZZ_ExtDepth = 12; extern int _ZZ_ExtDeviation = 5; extern int _ZZ_ExtBackstep = 3; // datetime_TimePrevious; datetime _TimeCurrent; // string_fstr; int_tp; // void MaxOrders(int max_orders = 5); // = ++ ============================================ = ================ ++ = int init() {{ if(_Symbol == "")_Symboll = Symbol(); // _Digitss = MarketInfo(_Symbol、MODE_DIGITS); _Points = MarketInfo(_Symbol、MODE_POINT); // if(_Timeframe == 0)_Timeframe = Period(); Print( "v128-2> init()>> _Timeframe ="、_ Timeframe、 "rem4 ="、_ IsStopLoss_0、 "rem5 ="、_ IsTrailingStop、_IsTrailingStopProfit); // _fstr = "v128_"; _tp = _FileReadWriteDouble(_fstr + "_ tp.dat"、0); //ファイルが存在することを確認し、存在しない場合は作成しますPrint( "v128-2> init()>> _Timeframe ="、_ Timeframe、 "_tp ="、_ tp); // _TimePrevious = iTime(_Symbol、_Timeframe、0); // Print( "v128-2>完了:init()>> _TimePrevious ="、_ TimePrevious、 "("、TimeToStr(_TimePrevious、TIME_DATE | TIME_MINUTES)、 ")"); return(0); } // = ++ ============================================ = ================ ++ = int start() {{ダブルP_Close1、P_Close2;ダブルBB_1_upper、BB_1_lower;ダブルMA1_0、MA2_0;ダブルP_ask、P_bid; bool is_signal_2_buy、is_signal_2_sell;ダブルP1_buy、P2_buy、P3_buy;ダブルP1_sell、P2_sell、P3_sell; bool is_b1 = false、is_s1 = false; bool is_b2 = false、is_s2 = false; intチケット; // _TimeCurrent = iTime(_Symbol、_Timeframe、0); if(_TimeCurrent!= _TimePrevious) {{ MA1_0 = iMA(_Symbol、_MA1_Timeframe、_MA1_Period、_MA1_Shift、_MA1_Method、_MA1_Applied_Price、0); MA2_0 = iMA(_Symbol、_MA2_Timeframe、_MA2_Period、_MA2_Shift、_MA2_Method、_MA2_Applied_Price、0); BB_1_upper = iBands(_Symbol、_Timeframe、_BB_Period、_BB_Deviation、_BB_Bands_Shift、_BB_Applied_Price、MODE_UPPER、1); BB_1_lower = iBands(_Symbol、_Timeframe、_BB_Period、_BB_Deviation、_BB_Bands_Shift、_BB_Applied_Price、MODE_LOWER、1); P_Close1 = iClose(_Symbol、_Timeframe、1); P_Close2 = iClose(_Symbol、_Timeframe、2); P_ask = MarketInfo(_Symbol、MODE_ASK); P_bid = MarketInfo(_Symbol、MODE_BID); Print( "v120-4>"、_ Symbol、 "|"、_Timeframe、 "-> MA1_0 ="、MA1_0、 "| MA2_0 ="、MA2_0、 "-> BB_1_upper ="、BB_1_upper、 "| BB_1_lower ="、BB_1_lower、 "-> P_Close1 ="、P_Close1、 "| P_Close2 ="、P_Close2、 "-> ask ="、P_ask、 "| bid ="、P_bid); // is_signal_2_buy = P_bid> = MA1_0 && P_bid> = MA2_0 && P_Close1> = BB_1_lower && P_Close2 <= BB_1_lower && P_bid> = BB_1_lower; is_signal_2_sell = P_bid <= MA1_0 && P_bid <= MA2_0 && P_Close1 <= BB_1_upper && P_Close2> = BB_1_upper && P_bid <= BB_1_upper; Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "-> is_signal2-> Buy ="、is_signal_2_buy、 "| Sell ="、is_signal_2_sell); //==========市場別//==========購入注文を開くif(is_signal_2_buy) {{ Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "->購入注文を開くためのシグナル"); OrdersDeleteAll(OP_SELL); // if(!is_b1 ||!is_b2) {{ P1_buy = P_ask; P3_buy = FindPriceMinMax(false)-(_SpaseFromMaxMin)* _Point; _tp =(P1_buy --P3_buy)/ _Point *(_TakeProfit1_Proc / 100.0); P2_buy = DoubleTestZero(_tp、P1_buy +(_tp)* _Point); // _FileWriteDouble(_fstr + "_ tp.dat"、_tp); // Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "->購入->P1_buy="、P1_buy、 "| P2_buy ="、P2_buy、 "| P3_buy ="、P3_buy、 "_tp ="、_tp); //チケット=OrderSend(_Symbol、OP_BUY、_Lots0_1、ND(P1_buy)、_Slippage、ND(P3_buy)、ND(P2_buy)、 NULL、_Magic1、0、CLR_NONE); if(ticket == -1) Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "->購入(1)>エラー(開く)#"、GetLastError());それ以外の場合、is_b1 = true; //チケット=OrderSend(_Symbol、OP_BUY、_Lots0_2、ND(P1_buy)、_Slippage、ND(P3_buy)、0、 NULL、_Magic2、0、CLR_NONE); if(ticket == -1) Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "->購入(2)>エラー(開く)#"、GetLastError());それ以外の場合、is_b2 = true; // } else {is_b1 = true; is_b2 = true; } } else {is_b1 = true; is_b2 = true; } // Print( "= Buy +++"、is_b1、is_b2、 "=="、is_s1、is_s2); //==========販売注文を開くif(is_signal_2_sell) {{ Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "->売り注文を開くためのシグナル"); OrdersDeleteAll(OP_BUY); // if(!is_s1 ||!is_s2) {{ P1_sell = P_bid; P3_sell = FindPriceMinMax(true)+(_SpaseFromMaxMin)* _Point; _tp =(P3_sell --P1_sell)/ _Point *(_TakeProfit1_Proc / 100.0); P2_sell = DoubleTestZero(_tp、P1_sell-(_tp)* _Point); // _FileWriteDouble(_fstr + "_ tp.dat"、_tp); // Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "->購入->P1_sell="、P1_sell、 "| P2_sell ="、P2_sell、 "| P3_sell ="、P3_sell); //チケット=OrderSend(_Symbol、OP_SELL、_Lots0_1、ND(P1_sell)、_Slippage、ND(P3_sell)、ND(P2_sell)、 NULL、_Magic1、0、CLR_NONE); if(ticket == -1) Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "-> SELL(1)>エラー(開く)#"、GetLastError());それ以外の場合、is_s1 = true; //チケット=OrderSend(_Symbol、OP_SELL、_Lots0_2、ND(P1_sell)、_Slippage、ND(P3_sell)、0、 NULL、_Magic2、0、CLR_NONE); if(ticket == -1) Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 "-> SELL(2)>エラー(開く)#"、GetLastError());それ以外の場合、is_s2 = true; // } else {is_s1 = true; is_s2 = true; } } else {is_s1 = true; is_s2 = true; } // Print( "= Sell +++"、is_b1、is_b2、 "=="、is_s1、is_s2); // ========== if(is_b1 && is_s1 && is_b2 && is_s2) _TimePrevious = _TimeCurrent; } // if(_IsTrailingStop) {{ if(!FindOrders(_Magic1))TrailingStop(_tp); } // if(_IsStopLoss_0) StopLoss_0(_StopLoss_0_From); // return(0); } // = ++ ============================================ = ================ ++ = double DoubleTestZero(double value、double new_value) {{ if(value == 0)return(value);それ以外の場合はreturn(new_value); } // = ++ ============================================ = ================ ++ = double ND(double value) {{ return(NormalizeDouble(value、_Digits)); } // = ++ ============================================ = ================ ++ = //注文を閉じます。すべてを閉じるで終了void OrdersDeleteAll(int cmd) {{ while(CountOrders(cmd)> 0) {{ for(int i = OrdersTotal()-1; i> = 0; i--) {{ if(OrderSelect(i、SELECT_BY_POS、MODE_TRADES)) {{ if((OrderSymbol()== _Symbol) &&(OrderMagicNumber()== _Magic1 || OrderMagicNumber()== _Magic2) &&(OrderType()== cmd)) {{ if(OrderType()== OP_BUY) if(!OrderClose(OrderTicket()、OrderLots()、MarketInfo(OrderSymbol()、MODE_BID)、_Slippage、CLR_NONE)) Print( "v128-2>"、_ Symbol、 "> BUY-> ticket ="、OrderTicket()、 "->エラー(閉じる)#"、GetLastError()); if(OrderType()== OP_SELL) if(!OrderClose(OrderTicket()、OrderLots()、MarketInfo(OrderSymbol()、MODE_ASK)、_Slippage、CLR_NONE)) Print( "v128-2>"、_ Symbol、 "> SELL-> ticket ="、OrderTicket()、 "->エラー(閉じる)#"、GetLastError()); } } } } // 注文数} // = ++ ============================================ = ================ ++ = //その方向の注文数を数えるint CountOrders(int cmd) {{ int n = 0; for(int i = OrdersTotal()-1; i> = 0; i--) {{ if(OrderSelect(i、SELECT_BY_POS、MODE_TRADES)) {{ if((OrderSymbol()== _Symbol) &&(OrderMagicNumber()== _Magic1 || OrderMagicNumber()== _Magic2) &&(OrderType()== cmd))n ++; } } return(n); } // = ++ ============================================ = ================ ++ = //魔法で注文を検索bool FindOrders(int magic) {{ for(int i = OrdersTotal()-1; i> = 0; i--) {{ if(OrderSelect(i、SELECT_BY_POS、MODE_TRADES)) {{ if((OrderSymbol()== _Symbol)&&(OrderMagicNumber()== magic)) return(true); } } return(false); } // = ++ ============================================ = ================ ++ = //魔法で損益分岐点を計算するvoid StopLoss_0(int from) {{ダブルプロフィットポイント、ビッド、アスク; boolは;ダブルP3_buy、P3_sell; // for(int i = OrdersTotal()-1; i> = 0; i--) {{ if(OrderSelect(i、SELECT_BY_POS、MODE_TRADES)) {{ if(!((OrderSymbol()== _Symbol)&&(OrderMagicNumber()== _Magic1 || OrderMagicNumber()== _Magic2)))続行; // if(OrderType()== OP_BUY) {{ bid = MarketInfo(_Symbol、MODE_BID);利益ポイント=(入札-OrderOpenPrice())/ _Point; is = Profitpoint> = _StopLoss_0_Level + from; P3_buy = ND(OrderOpenPrice()+ from * _Point); // if(is &&(OrderStopLoss()== 0 || OrderStopLoss()<P3_buy)) {{ Print( "v128-2 b4>"、_ Symbol、 "|"、_Timeframe、 "-> Bid ="、MarketInfo(_Symbol、MODE_BID)、 "| p / o ="、OrderOpenPrice()、 "| s / l ="、OrderStopLoss()、 "| P3_buy ="、P3_buy、 "| d ="、_ StopLoss_0_Level、 "| Profitpoint ="、profitpoint); if(!OrderModify(OrderTicket()、OrderOpenPrice()、P3_buy、OrderTakeProfit()、0、CLR_NONE)) Print( "v128-2 b4>"、_ Symbol、 "|"、_Timeframe、 "->購入>ticket="、OrderTicket()、 ">エラー(ブレークイーブン)#"、GetLastError()); } } // else if(OrderType()== OP_SELL) {{ ask = MarketInfo(_Symbol、MODE_ASK);利益ポイント=(OrderOpenPrice()-質問)/ _Point; is = Profitpoint> = _StopLoss_0_Level + from; P3_sell = ND(OrderOpenPrice()-from * _Point); // if(is &&(OrderStopLoss()== 0 || OrderStopLoss()> P3_sell)) {{ Print( "v128-2 b4>"、_ Symbol、 "|"、_Timeframe、 "-> Ask ="、MarketInfo(_Symbol、MODE_ASK)、 "| p / o ="、OrderOpenPrice()、 "| s / l ="、OrderStopLoss()、 "| P3_sell ="、P3_sell、 "| d ="、_ StopLoss_0_Level、 "| Profitpoint ="、profitpoint); if(!OrderModify(OrderTicket()、OrderOpenPrice()、P3_sell、OrderTakeProfit()、0、CLR_NONE)) Print( "v128-2 b4>"、_ Symbol、 "|"、_Timeframe、 "-> SELL-> ticket ="、OrderTicket()、 ">エラー(損益分岐点)#"、GetLastError()); } } } } } // = ++ ============================================ = ================ ++ = //魔法でトレーリングストップを解決するvoid TrailingStop(int from) {{ダブルプロフィットポイント、ビッド、アスク;価格から2倍; // for(int i = OrdersTotal()-1; i> = 0; i--) {{ if(OrderSelect(i、SELECT_BY_POS、MODE_TRADES)) {{ if(!((OrderSymbol()== _Symbol)&&(OrderMagicNumber()== _Magic1 || OrderMagicNumber()== _Magic2)))続行; // if(OrderType()== OP_BUY) {{ if(_IsTrailingStopProfit)fromprice = OrderOpenPrice()+ from * _Point; else fromprice = OrderStopLoss(); // bid = MarketInfo(_Symbol、MODE_BID);利益ポイント=(入札-ND(fromprice))/ _Point; // if(profitpoint> = _TrailingStopLevel &&入札>(OrderStopLoss()+(_TrailingStopLevel + _TrailingStopStep)* _Point)) {{ Print( "v128-2 v4>"、_ Symbol、 "|"、_Timeframe、 "-> Bid ="、MarketInfo(_Symbol、MODE_BID)、 "| p / o ="、OrderOpenPrice()、 "| s / l ="、OrderStopLoss()、 "| d ="、_ TrailingStopLevel、 "| Profitpoint ="、profitpoint); if(!OrderModify(OrderTicket()、OrderOpenPrice()、ND(bid-(_TrailingStopLevel)* _Point)、 OrderTakeProfit()、0、CLR_NONE)) {{ Print( "v128-2 v4>"、_ Symbol、 "|"、_Timeframe、 "->購入>ticket="、OrderTicket()、 ">エラー(トレーリングストップ)#"、GetLastError()); } } } // else if(OrderType()== OP_SELL) {{ if(_IsTrailingStopProfit)fromprice = OrderOpenPrice()-from * _Point; else fromprice = OrderStopLoss(); // ask = MarketInfo(_Symbol、MODE_ASK);利益ポイント=(ND(fromprice)-質問)/ _Point; // if(profitpoint> = _TrailingStopLevel && ask <(OrderStopLoss()-(_TrailingStopLevel + _TrailingStopStep)* _Point)) {{ Print( "v128-2 v4>"、_ Symbol、 "|"、_Timeframe、 "-> Ask ="、MarketInfo(_Symbol、MODE_ASK)、 "| p / o ="、OrderOpenPrice()、 "| s / l ="、OrderStopLoss()、 "| d ="、_ TrailingStopLevel、 "| Profitpoint ="、profitpoint); if(!OrderModify(OrderTicket()、OrderOpenPrice()、ND(ask +(_TrailingStopLevel)* _Point)、 OrderTakeProfit()、0、CLR_NONE)) {{ Print( "v128-2 v4>"、_ Symbol、 "|"、_Timeframe、 "-> SELL> ticket ="、OrderTicket()、 ">エラー(トレーリングストップ)#"、GetLastError()); } } } } } } // = ++ ============================================ = ================ ++ = //ローカルボトムを検索します。価格を返しますdouble FindPriceMinMax(bool isUp) {{ intシフト=1;ダブルプライス=0、p0、p1、p2; while(price == 0) {{ p0 = iCustom(_Symbol、_Timeframe、 "ZigZag"、_ZZ_ExtDepth、_ZZ_ExtDeviation、_ZZ_ExtBackstep、0、shift); p1 = iCustom(_Symbol、_Timeframe、 "ZigZag"、_ZZ_ExtDepth、_ZZ_ExtDeviation、_ZZ_ExtBackstep、1、shift); p2 = iCustom(_Symbol、_Timeframe、 "ZigZag"、_ZZ_ExtDepth、_ZZ_ExtDeviation、_ZZ_ExtBackstep、2、shift); // Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 // "> sift ="、shift、 "| p0 ="、p0、 "| p1 ="、p1、 "| p2 ="、p2); if(isUp) {{ if(p0!= 0 && p0 == p1)//頂点が見つかりました価格=p0; }そうしないと{{ if(p0!= 0 && p0 == p2)//下部が見つかりました価格=p0; }シフト++; } // Print( "v128-2>"、_ Symbol、 "|"、_Timeframe、 // "-> return(price)="、price); return(価格); } // =============================================== = ==================== //ファイルから変数を読み取ります。 //ファイルが存在しない場合は、ファイルを作成して変数をファイルに書き込みますdouble _FileReadWriteDouble(string filename、double value) {{ int h1 = FileOpen(filename、FILE_BIN); if(h1> 0) {{値=FileReadDouble(h1、DOUBLE_VALUE); FileClose(h1); }そうしないと{{ h1 = FileOpen(filename、FILE_BIN | FILE_WRITE); FileWriteDouble(h1、value、DOUBLE_VALUE); FileClose(h1); } return(value); } // =============================================== = ==================== //変数をファイルに書き込みますvoid _FileWriteDouble(string filename、double value) {{ int h1 = FileOpen(filename、FILE_BIN | FILE_WRITE); FileWriteDouble(h1、value、DOUBLE_VALUE); FileClose(h1); } EAを書くのに無償で協力してください。5種類のアイデア Any questions from newcomers Please help write EAs vitek2010 2017.01.04 21:46 #545 Vitalie Postolache:上で示したコードでは、参照先は現在のTFになっていますが、何のことでしょうか?W1からのM5を指しているのであれば、そのように書いてください。あなたは、現在のタイムフレームで動作する場合は、終値はゼロバーで、残りの部分に浮いている - 唯一の終値ではなく、多くの、どのように1つの値でヒストグラムを構築するのですか、私は理解していないです。画像を描きたい場合は、エディットボックスの上部にあるアイコンボタンを使うと便利なボタンがたくさんあるので、覚えておくといいだろう。現在のタイムフレームでのインジケーターの 最大値と最小値の読み取りを、現在のタイムフレーム中に取得する方法をお聞きしているのです。私が怠惰で写真を探したくないと思っているのなら、違う。でも、やっぱりできないんです。ターミナル(インスタ)のチャート上で右クリック - 画像として保存 - そのままアクティブチャート - MKL5に転送(同じターミナルの画像がそこに表示されます) - 最下行bbCode(私はコードを選択してコピー)、私はメッセージにこのコードを挿入し、私がメッセージを送信した後、メッセージに画像があるはずです。(このフォーラムにはありませんが、コードテキストのみ表示されます)、「写真」ボタン(Ctrl+Alt+l)でファイルを選択しようとしましたが、ダウンロードしたコードはこの行に貼り付けられません、スクリーンショットなしでは理解できないでしょう。 Vitalie Postolache 2017.01.04 22:05 #546 vitek2010:私は、現在のタイムフレームにおけるインジケータの最大値と最小値の読み取りを、現在のタイムフレーム中に取得する方法を尋ね、例としてスクリーンショットを示しました。私が怠惰で写真を探したくないと思っているのなら、違う。でも、やっぱりできないんです。ターミナル(インスタ)のチャート上で右クリック - 画像として保存 - そのままアクティブチャート - MKL5に転送(同じターミナルの画像がそこに表示されます) - 最下行bbCode(私はコードを選択してコピー)、私はメッセージにこのコードを挿入し、私がメッセージを送信した後、メッセージに画像があるはずです。(このフォーラムにはなく、コードテキストのみ表示)、「写真」ボタン(Ctrl+Alt+l)でファイルを選択してみましたが、ダウンロードしたコードはこのグラフには貼り付けられませんが、スクリーンショットがないとわからないと思います。ローカルコンピュータのファイル名の代わりに、同じ行にリンクを挿入し、そこにファイル名を書けば、すべてがうまくいくのです。このようにメッセージにリンクを挿入することも可能ですが、このフォーラムではタグが機能しませんので、タグなしで挿入してください。 こんな感じ。小さいTFからの価格取得については、個別にCopyRatesや類似の機能がありますね。 これを配列にコピーし、ループ内でより高いTFのローソク足の時間と比較し、より低いローソク足が適合すれば、その価格をインジケータにカウントします。 Mickey Moose 2017.01.04 23:03 #547 テスターでインジケーターの図面を見る方法はないでしょうか。グラフを見ると、私が見逃していたことがわかりますから ファイル: Tester11.gif 18 kb Vitalie Postolache 2017.01.04 23:07 #548 trader781: テスターでインジケーターの図面を見ることができますか?チャートから判断すると、私はそこで何かを見逃してしまったので。テスターの中に、「グラフを開く」ボタンがあります。何に使うんだろう?または「可視化」チェックボックス。 Mickey Moose 2017.01.04 23:12 #549 Vitalie Postolache:テスターの中に、「グラフを開く」ボタンがあります。何に使うんだろう?または「ビジュアライゼーション」チェックボックス。 つまり、チャートがスクロールしている間、そこにはインデックスがないのです Vitalie Postolache 2017.01.04 23:28 #550 trader781: つまり、チャートがスクロールしている間、そこには七面鳥がいないんです。 一度もなかった。必要なときに手で入れるんですね。テストから一時停止、インジケーターからチャートへ、そして回す。 1...484950515253545556575859606162...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
クラス、配列、マクロ、Windowsのライブラリからのインポートはまだ使っていません。すべて順調です。
アレイだともったいない。配列は便利です。そして、構造もそうです。あとは、そうですね、プロジェクトが複雑でなければ、全く使えないということはありません。
配列はとても便利で、配列なしでは賢明なプログラムを書けないことがよくありますね。構造体...私はウェブプログラムでクラスを書きますが、特にプロジェクトが大きい場合、それがないと本当にまずいし、便利ではありません。私はOOPですべての開閉データを書き、使い始めてすべてを削除し、手続き型に書き換えて使い、すべてを1つのループで書きました。だから、授業は愛好家のためのものです。
未決済注文の最大数を追加するのを手伝ってください(MAXORders)
}
上で示したコードでは、参照先は現在のTFになっていますが、何のことでしょうか?W1からのM5を指しているのであれば、そのように書いてください。
あなたは、現在のタイムフレームで動作する場合は、終値はゼロバーで、残りの部分に浮いている - 唯一の終値ではなく、多くの、どのように1つの値でヒストグラムを構築するのですか、私は理解していないです。
画像を描きたい場合は、エディットボックスの上部にあるアイコンボタンを使うと便利なボタンがたくさんあるので、覚えておくといいだろう。
現在のタイムフレームでのインジケーターの 最大値と最小値の読み取りを、現在のタイムフレーム中に取得する方法をお聞きしているのです。
私が怠惰で写真を探したくないと思っているのなら、違う。でも、やっぱりできないんです。ターミナル(インスタ)のチャート上で右クリック - 画像として保存 - そのままアクティブチャート - MKL5に転送(同じターミナルの画像がそこに表示されます) - 最下行bbCode(私はコードを選択してコピー)、私はメッセージにこのコードを挿入し、私がメッセージを送信した後、メッセージに画像があるはずです。(このフォーラムにはありませんが、コードテキストのみ表示されます)、「写真」ボタン(Ctrl+Alt+l)でファイルを選択しようとしましたが、ダウンロードしたコードはこの行に貼り付けられません、スクリーンショットなしでは理解できないでしょう。
私は、現在のタイムフレームにおけるインジケータの最大値と最小値の読み取りを、現在のタイムフレーム中に取得する方法を尋ね、例としてスクリーンショットを示しました。
私が怠惰で写真を探したくないと思っているのなら、違う。でも、やっぱりできないんです。ターミナル(インスタ)のチャート上で右クリック - 画像として保存 - そのままアクティブチャート - MKL5に転送(同じターミナルの画像がそこに表示されます) - 最下行bbCode(私はコードを選択してコピー)、私はメッセージにこのコードを挿入し、私がメッセージを送信した後、メッセージに画像があるはずです。(このフォーラムにはなく、コードテキストのみ表示)、「写真」ボタン(Ctrl+Alt+l)でファイルを選択してみましたが、ダウンロードしたコードはこのグラフには貼り付けられませんが、スクリーンショットがないとわからないと思います。
ローカルコンピュータのファイル名の代わりに、同じ行にリンクを挿入し、そこにファイル名を書けば、すべてがうまくいくのです。このように
メッセージにリンクを挿入することも可能ですが、このフォーラムではタグが機能しませんので、タグなしで挿入してください。 こんな感じ。
小さいTFからの価格取得については、個別にCopyRatesや類似の機能がありますね。
これを配列にコピーし、ループ内でより高いTFのローソク足の時間と比較し、より低いローソク足が適合すれば、その価格をインジケータにカウントします。テスターでインジケーターの図面を見ることができますか?チャートから判断すると、私はそこで何かを見逃してしまったので。
テスターの中に、「グラフを開く」ボタンがあります。何に使うんだろう?
または「可視化」チェックボックス。
テスターの中に、「グラフを開く」ボタンがあります。何に使うんだろう?
または「ビジュアライゼーション」チェックボックス。
つまり、チャートがスクロールしている間、そこには七面鳥がいないんです。