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

 
trader781:
クラス、配列、マクロ、Windowsのライブラリからのインポートはまだ使っていません。すべて順調です。
配列でやってはいけなかったんですね。配列は便利です。そして、構造もそうです。あとは、そうですね、よほど複雑なプロジェクト でなければ、まったく使わないかもしれません。
 
Vitalie Postolache:
アレイだともったいない。配列は便利です。そして、構造もそうです。あとは、そうですね、プロジェクトが複雑でなければ、全く使えないということはありません。
配列については、非常に便利であり、配列なしでは賢明なプログラムを書けないことが多いことに同意します。構造体...私はウェブプログラムでクラスを使いたいのですが、特にプロジェクトが 大きい場合、本当に便利ではありませんし、通常の1ページのExpert AdvisorでMQを使うのは好きではありません。私は、OOPですべてのデータをopen/closedで書き、使い始めてすべてを削除し、手続き型で書き直して使い、すべてを1つのループで書きました。だから、授業はちょっと嗜好品なんです。
 
Vitaly Muzichenko:
配列はとても便利で、配列なしでは賢明なプログラムを書けないことがよくありますね。構造体...私はウェブプログラムでクラスを書きますが、特にプロジェクトが大きい場合、それがないと本当にまずいし、便利ではありません。私はOOPですべての開閉データを書き、使い始めてすべてを削除し、手続き型に書き換えて使い、すべてを1つのループで書きました。だから、授業は愛好家のためのものです。
ふむふむ。授業と何の関係があるんだ?ストラクチャーとクラスは少し違うものです。構造について書きました。MqlRatesなどなど・・・。
 

未決済注文の最大数を追加するのを手伝ってください(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);

}

 
Vitalie Postolache:

上で示したコードでは、参照先は現在のTFになっていますが、何のことでしょうか?W1からのM5を指しているのであれば、そのように書いてください。

あなたは、現在のタイムフレームで動作する場合は、終値はゼロバーで、残りの部分に浮いている - 唯一の終値ではなく、多くの、どのように1つの値でヒストグラムを構築するのですか、私は理解していないです。

画像を描きたい場合は、エディットボックスの上部にあるアイコンボタンを使うと便利なボタンがたくさんあるので、覚えておくといいだろう。

現在のタイムフレームでのインジケーターの 最大値と最小値の読み取りを、現在のタイムフレーム中に取得する方法をお聞きしているのです。

私が怠惰で写真を探したくないと思っているのなら、違う。でも、やっぱりできないんです。ターミナル(インスタ)のチャート上で右クリック - 画像として保存 - そのままアクティブチャート - MKL5に転送(同じターミナルの画像がそこに表示されます) - 最下行bbCode(私はコードを選択してコピー)、私はメッセージにこのコードを挿入し、私がメッセージを送信した後、メッセージに画像があるはずです。(このフォーラムにはありませんが、コードテキストのみ表示されます)、「写真」ボタン(Ctrl+Alt+l)でファイルを選択しようとしましたが、ダウンロードしたコードはこの行に貼り付けられません、スクリーンショットなしでは理解できないでしょう。


 
vitek2010:

私は、現在のタイムフレームにおけるインジケータの最大値と最小値の読み取りを、現在のタイムフレーム中に取得する方法を尋ね、例としてスクリーンショットを示しました。

私が怠惰で写真を探したくないと思っているのなら、違う。でも、やっぱりできないんです。ターミナル(インスタ)のチャート上で右クリック - 画像として保存 - そのままアクティブチャート - MKL5に転送(同じターミナルの画像がそこに表示されます) - 最下行bbCode(私はコードを選択してコピー)、私はメッセージにこのコードを挿入し、私がメッセージを送信した後、メッセージに画像があるはずです。(このフォーラムにはなく、コードテキストのみ表示)、「写真」ボタン(Ctrl+Alt+l)でファイルを選択してみましたが、ダウンロードしたコードはこのグラフには貼り付けられませんが、スクリーンショットがないとわからないと思います。

ローカルコンピュータのファイル名の代わりに、同じ行にリンクを挿入し、そこにファイル名を書けば、すべてがうまくいくのです。このように

メッセージにリンクを挿入することも可能ですが、このフォーラムではタグが機能しませんので、タグなしで挿入してください。 こんな感じ。

小さいTFからの価格取得については、個別にCopyRatesや類似の機能がありますね。

これを配列にコピーし、ループ内でより高いTFのローソク足の時間と比較し、より低いローソク足が適合すれば、その価格をインジケータにカウントします。
 
テスターでインジケーターの図面を見る方法はないでしょうか。グラフを見ると、私が見逃していたことがわかりますから
ファイル:
Tester11.gif  18 kb
 
trader781:
テスターでインジケーターの図面を見ることができますか?チャートから判断すると、私はそこで何かを見逃してしまったので。

テスターの中に、「グラフを開く」ボタンがあります。何に使うんだろう?

または「可視化」チェックボックス。

 
Vitalie Postolache:

テスターの中に、「グラフを開く」ボタンがあります。何に使うんだろう?

または「ビジュアライゼーション」チェックボックス。

つまり、チャートがスクロールしている間、そこにはインデックスがないのです
 
trader781:
つまり、チャートがスクロールしている間、そこには七面鳥がいないんです。
一度もなかった。必要なときに手で入れるんですね。テストから一時停止、インジケーターからチャートへ、そして回す。