MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1941 1...193419351936193719381939194019411942194319441945194619471948...1953 新しいコメント Nikolay Ivanov 2022.04.03 17:05 #19401 Aleksandr Kononov #: さて、メモリを確認する方法はあるのでしょうか?消費とかどうなんだろう? 例えば、メモリに影響を与えることができ、それは200の指標を計算しますが、1週間後にあなたはなぜ1000の指標をロードしていないことを尋ねることができます...等。悪循環...正しいタスクの設定... Aleksandr Kononov 2022.04.03 17:11 #19402 Nikolay Ivanov #:ハングアップしたコードはどこにも適用できません。できるタスクを設定して...。そして、コードを失敗しやすくなる...。指標は高速に動作しなければならず、超長時間の計算をしている暇はないのです。 何かが生み出される限界を知りたいですね。ましてや私はプログラマーではありませんから、どう扱えばいいのかわからないでしょう。さて、何か読むものはないかと探してみる。 Nikolay Ivanov 2022.04.03 17:21 #19403 Aleksandr Kononov #:何かを生み出すための枠組みがわかればいいのですが。特に私は全くプログラマーではないので、初心者が理解するのは難しいです。よし、読んでみるか。 CCIは通常1つ、最大3つまでしか必要ありません。限界を超えないようにするのは難しい、経験が必要、適度な時間でうまく完了する正しい実現可能なタスクを設定する、難しいというのは同意します。例えば、期間20のCCIと期間21のCCI・・・ほとんど同じもので、両方計算する意味はありません。 期間が長くなればなるほど効果は少なくなるので、妥当な数字を探す必要があります。美しいソリューションは、常に迅速に動作します。 Aleksandr Kononov 2022.04.03 17:35 #19404 Nikolay Ivanov #:CCIは通常1個で十分で、多くても3個です :) そして、200個あります...制限内に収めることの難しさについては、私も同感です。経験が必要で、適切で達成可能なタスクを設定するのは難しく、妥当な時間でうまく完了させることができるでしょう。例えば、期間20のCCIと期間21のCCI・・・ほとんど同じもので、両方計算する意味はありません。 期間が長くなればなるほど効果は少なくなるので、妥当な数字を探す必要があります。美しいソリューションは、常に迅速に動作します。 プロファイラを使えば、メモリの消費量を測定することができると理解しています。だから最適化するのです)。どなたか、どこで読めるかご存知の方、リンクを送ってください...。 законопослушный гражданин 2022.04.03 18:22 #19405 みなさんこんにちは MAを前方(正の値)だけでなく後方(負の値)にも移動させるために、コードに何を追加すべきかアドバイスしてください。 以下は、Expert Advisorのコードです。 // Параметры советника input string sParametersEA = ""; // Параметры советника input double Lot = 0.01; // Количество лотов input int StopLoss = 30; // Стоп (SL) input int TakeProfit = 30; // Тейк (TP) input int Slippage = 3; // Проскальзование (в пунктах) input int Magic = 1; // Индентификатор советника input double K_Martin1 = 0.01; // Множитель мартин 1 input double K_Martin2 = 1.9; // Множитель мартин 2 input double K_Martin3 = 1.4; // Множитель мартин 3 input int OrdersClose = 3; // Ограничение лотности мартин1 input int OrdersClose2 = 5; // Ограничение лотности мартин2 input int DigitsLot = 2; // Точность лотности // Параметры индикатора input string sParametersMA = ""; // Параметры индикатора input int PeriodMA = 14; // Период мувинга input int MovingShift = 1; // Сдвиг мувинга // Глобальные переменные datetime Start,newbar; double dMA; double MaxMartinLot; double MaxMartinLot2; //+-----------------------------------------------------------------------------------------------+ int OnInit() { Start = TimeCurrent(); MaxMartinLot = Lot*MathPow(1.4,OrdersClose); MaxMartinLot2 = Lot*MathPow(K_Martin2,OrdersClose2); int Y = 15; DrawLABEL("nextlot",1,5,Y,clrLime,""); Y += 20; DrawLABEL("currentlot",1,5,Y,clrLime,""); Y += 30; return(INIT_SUCCEEDED); } //+-----------------------------------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+-----------------------------------------------------------------------------------------------+ void OnTick() { // Получим значение индикатора dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0. // Если нет открытых ордеров, то входим в условие if(CountOrders()==0) { // Если появился сигнал на покупку, то откроем ордер на покупку if(bSignalBuy() == true) vOrderOpenBuy(); // Если появился сигнал на продажу, то откроем ордер на продажу if(bSignalSell() == true) vOrderOpenSell(); } // Пишем какой лот текущий и какой следующий DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2))); DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2))); } ALEKSANDR SOKOLOV 2022.04.04 11:07 #19406 законопослушный гражданин #:みなさんこんにちはMAを前方(正の値)だけでなく後方(負の値)にも移動させるために、コードに何を追加すべきかアドバイスしてください。以下は、Expert Advisorのコードです。 シフトに希望する負の値を加えますが、値+シフトはゼロ以下である必要があります。 законопослушный гражданин 2022.04.04 11:46 #19407 ALEKSANDR SOKOLOV #:シフトに必要な負の値を加えますが、値+シフトが少なくとも0であることを確認します。 ありがとうございます、試してみます。 Maksim Burov 2022.04.05 08:37 #19408 こんにちは。 コードのヘルプ、もしかしたら例があるかもしれません。 タスク 異なるロットで、異なる方向に、いくつかのオープンオーダーがあります。一人は利益で埋まっている、仮に20人とする。しかし、マイナスの利益でオープンオーダーがあり、0.05ロットで-55とします。マイナス注文の一部をプラスで決済した注文の利益分だけ決済して、ドローダウンを減少させたい。 while演算子を使って書いてみたのですが、うまくいきませんでした。 よろしくお願いします。 MatveySt 2022.04.05 10:36 #19409 こんにちは、このコードはFedoseevの本から引用しています。ログには実行中とあり、コンパイル中のエラーもなく、追加のウィンドウが開きます(空です)。どうしたんですか? //+------------------------------------------------------------------+ //| 015 シンボル.mq5 //+------------------------------------------------------------------+ #property copyright "Dmitry Fedoseev" (ドミトリー・フェドセーエフ) #プロパティリンク "mailto:for-good-letter@yandex.ru" #property version "1.00" #property indicator_separate_window #プロパティ indicator_buffers 4 #property indicator_plots 1 //--- プロットバー #property indicator_label1 "bar" #property indicator_type1 DRAW_CANDLES #property indicator_color1 clrGray,clrBlue,clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- 入力パラメータ 入力文字列 symbol=""; 入力 bool drawBars=false; 文字列sym; //--- インジケータ・バッファ double barBuffer1[]。 double barBuffer2[]; double barBuffer3[]。 double barBuffer4[]。 //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int OnInit() { sym=symbol です。 StringTrimLeft(sym); StringTrimRight(sym); if(sym=="") { sym=Symbol()です。 } if(!SymbolSelect(sym,true) ){。 Alert("不明なシンボル",sym); return(INIT_FAILED); } if(drawBars){。 PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_BARS); } else{ PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_CANDLES); } //--- インジケータ・バッファのマッピング SetIndexBuffer(0,barBuffer1,INDICATOR_DATA)を設定します。 SetIndexBuffer(1,barBuffer2,INDICATOR_DATA)を設定します。 SetIndexBuffer(2,barBuffer3,INDICATOR_DATA)を設定します。 SetIndexBuffer(3,barBuffer4,INDICATOR_DATA)を設定。 //--- return(INIT_SUCCEEDED); } void OnDeinit(const int r){. Comment(")です。 EventKillTimer()。 } //+------------------------------------------------------------------+ //| カスタムインジケータ反復関数 //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int bars=Bars(sym,Period()); if(bars=0){。 Comment("タイムフレームの形成",sym,"...); EventSetTimer(1); return(0)です。 } int startです。 if(prev_calculated==0){。 Comment(")です。 EventKillTimer()。 datetime tm[1]; if(CopyTime(sym,Period(),bars-1,1,tm)==-1){. return(0)です。 } start=0とする。 for(;start<rates_total;start++){。 if(time[start]>=tm[0]){ が壊れる。 } } } else{ start=prev_calculated-1。 } MqlRates r[1]; for(int i=start;i<rates_total;i++){。 if(CopyRates(sym,Period(),time[i],1,r)==-1){とする。 return(0)です。 } barBuffer1[i]=r[0].open; barBuffer2[i]=r[0].high; barBuffer3[i]=r[0].low; barBuffer4[i]=r[0].closeとする。 } return(rates_total); } void OnTimer() { ChartSetSymbolPeriod(0,Symbol(),Period())。 } //+------------------------------------------------------------------+ ファイル: 015_Symbol1.mq5 7 kb Any questions from newcomers MetaTrader 5へのアップグレードを損なわずに行うためのヘルプ 理論から実践へ Valeriy Yastremskiy 2022.04.05 10:59 #19410 MatveySt #:こんにちは、このコードはFedoseevの本から引用しています。ログには実行中とあり、コンパイル時にはエラーはなく、追加のウィンドウが開きます(空です)。どうしたんですか? Altキーを押しながらコードを貼り付けてください。 また、インダクターを鋳造する際に、工具を入力するのでしょうか? 1...193419351936193719381939194019411942194319441945194619471948...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
さて、メモリを確認する方法はあるのでしょうか?消費とかどうなんだろう?
例えば、メモリに影響を与えることができ、それは200の指標を計算しますが、1週間後にあなたはなぜ1000の指標をロードしていないことを尋ねることができます...等。悪循環...正しいタスクの設定...
ハングアップしたコードはどこにも適用できません。できるタスクを設定して...。そして、コードを失敗しやすくなる...。指標は高速に動作しなければならず、超長時間の計算をしている暇はないのです。
何かが生み出される限界を知りたいですね。ましてや私はプログラマーではありませんから、どう扱えばいいのかわからないでしょう。さて、何か読むものはないかと探してみる。
何かを生み出すための枠組みがわかればいいのですが。特に私は全くプログラマーではないので、初心者が理解するのは難しいです。よし、読んでみるか。
CCIは通常1つ、最大3つまでしか必要ありません。限界を超えないようにするのは難しい、経験が必要、適度な時間でうまく完了する正しい実現可能なタスクを設定する、難しいというのは同意します。例えば、期間20のCCIと期間21のCCI・・・ほとんど同じもので、両方計算する意味はありません。 期間が長くなればなるほど効果は少なくなるので、妥当な数字を探す必要があります。美しいソリューションは、常に迅速に動作します。
CCIは通常1個で十分で、多くても3個です :) そして、200個あります...制限内に収めることの難しさについては、私も同感です。経験が必要で、適切で達成可能なタスクを設定するのは難しく、妥当な時間でうまく完了させることができるでしょう。例えば、期間20のCCIと期間21のCCI・・・ほとんど同じもので、両方計算する意味はありません。 期間が長くなればなるほど効果は少なくなるので、妥当な数字を探す必要があります。美しいソリューションは、常に迅速に動作します。
プロファイラを使えば、メモリの消費量を測定することができると理解しています。だから最適化するのです)。どなたか、どこで読めるかご存知の方、リンクを送ってください...。
みなさんこんにちは
MAを前方(正の値)だけでなく後方(負の値)にも移動させるために、コードに何を追加すべきかアドバイスしてください。
以下は、Expert Advisorのコードです。
みなさんこんにちは
MAを前方(正の値)だけでなく後方(負の値)にも移動させるために、コードに何を追加すべきかアドバイスしてください。
以下は、Expert Advisorのコードです。
シフトに希望する負の値を加えますが、値+シフトはゼロ以下である必要があります。
シフトに必要な負の値を加えますが、値+シフトが少なくとも0であることを確認します。
ありがとうございます、試してみます。
こんにちは。
コードのヘルプ、もしかしたら例があるかもしれません。
タスク
異なるロットで、異なる方向に、いくつかのオープンオーダーがあります。一人は利益で埋まっている、仮に20人とする。しかし、マイナスの利益でオープンオーダーがあり、0.05ロットで-55とします。マイナス注文の一部をプラスで決済した注文の利益分だけ決済して、ドローダウンを減少させたい。
while演算子を使って書いてみたのですが、うまくいきませんでした。
よろしくお願いします。
こんにちは、このコードはFedoseevの本から引用しています。ログには実行中とあり、コンパイル中のエラーもなく、追加のウィンドウが開きます(空です)。どうしたんですか?
//+------------------------------------------------------------------+
//| 015 シンボル.mq5
//+------------------------------------------------------------------+
#property copyright "Dmitry Fedoseev" (ドミトリー・フェドセーエフ)
#プロパティリンク "mailto:for-good-letter@yandex.ru"
#property version "1.00"
#property indicator_separate_window
#プロパティ indicator_buffers 4
#property indicator_plots 1
//--- プロットバー
#property indicator_label1 "bar"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGray,clrBlue,clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- 入力パラメータ
入力文字列 symbol="";
入力 bool drawBars=false;
文字列sym;
//--- インジケータ・バッファ
double barBuffer1[]。
double barBuffer2[];
double barBuffer3[]。
double barBuffer4[]。
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int OnInit()
{
sym=symbol です。
StringTrimLeft(sym);
StringTrimRight(sym);
if(sym=="") {
sym=Symbol()です。
}
if(!SymbolSelect(sym,true) ){。
Alert("不明なシンボル",sym);
return(INIT_FAILED);
}
if(drawBars){。
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_BARS);
}
else{
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_CANDLES);
}
//--- インジケータ・バッファのマッピング
SetIndexBuffer(0,barBuffer1,INDICATOR_DATA)を設定します。
SetIndexBuffer(1,barBuffer2,INDICATOR_DATA)を設定します。
SetIndexBuffer(2,barBuffer3,INDICATOR_DATA)を設定します。
SetIndexBuffer(3,barBuffer4,INDICATOR_DATA)を設定。
//---
return(INIT_SUCCEEDED);
}
void OnDeinit(const int r){.
Comment(")です。
EventKillTimer()。
}
//+------------------------------------------------------------------+
//| カスタムインジケータ反復関数
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int bars=Bars(sym,Period());
if(bars=0){。
Comment("タイムフレームの形成",sym,"...);
EventSetTimer(1);
return(0)です。
}
int startです。
if(prev_calculated==0){。
Comment(")です。
EventKillTimer()。
datetime tm[1];
if(CopyTime(sym,Period(),bars-1,1,tm)==-1){.
return(0)です。
}
start=0とする。
for(;start<rates_total;start++){。
if(time[start]>=tm[0]){
が壊れる。
}
}
}
else{
start=prev_calculated-1。
}
MqlRates r[1];
for(int i=start;i<rates_total;i++){。
if(CopyRates(sym,Period(),time[i],1,r)==-1){とする。
return(0)です。
}
barBuffer1[i]=r[0].open;
barBuffer2[i]=r[0].high;
barBuffer3[i]=r[0].low;
barBuffer4[i]=r[0].closeとする。
}
return(rates_total);
}
void OnTimer()
{
ChartSetSymbolPeriod(0,Symbol(),Period())。
}
//+------------------------------------------------------------------+
こんにちは、このコードはFedoseevの本から引用しています。ログには実行中とあり、コンパイル時にはエラーはなく、追加のウィンドウが開きます(空です)。どうしたんですか?
Altキーを押しながらコードを貼り付けてください。
また、インダクターを鋳造する際に、工具を入力するのでしょうか?