コーディングのヘルプ - ページ 395

 

EAがカウンターポジションを開けない

MQL Coderの皆様、こんにちは。

私のEAのバグについて質問があります。カウンタートレンドポジションを開かないようです(添付のスクリーンショット参照)。

取引は終了しているのですが、新しいトレンドの方向に沿って新しい取引を開始することができません。

// Indicator HMA NMC

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

//+------------------------------------------------------------------+

//| BUY |

//+------------------------------------------------------------------+

if(trendc!=trendp)

{

if(trendc==1) // code for buy

OpenBuy();

return(0);

}

//+------------------------------------------------------------------+

//| SELL |

//+------------------------------------------------------------------+

if(trendc==-1) // code for sell

{

OpenSell();

return(0);

}

}

[/CODE]

[CODE]

void CheckForClose()

{

RefreshRates();

double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

for(int i=0;i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

//+-------------------------------------------------------------------------------+

//| Close BUY |

//+-------------------------------------------------------------------------------+

if(trendc_c!=trendp_c) // Check trend

{

if(OrderType()==OP_BUY)

{

if(trendc_c==-1) //is buy?

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

//+--------------------------------------------------------------------------------+

//| Close SELL |

//+--------------------------------------------------------------------------------+

if(trendc_c!=trendp_c)

{

if(OrderType()==OP_SELL)

{

if(trendc_c==1) // SELL

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == false)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) Alert(ErrAlert);

ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

}

}

よろしくお願いします。

 
secretcode:
親愛なるムラデン

この投稿のように、添付のインジケータに「バンドを追加」することは可能でしょうか :https://www.mql5.com/en/forum/172894/page45

このインディケータはエリートセクションのものですが、バンドを追加する方法が好きです。

よろしくお願いします。

シークレットコード

シークレットコード

バンドを追加したバージョンはこちらです :ema_variation__filter_amp_bands_amp_mtf.ex4

 
mladen:
secretcode バンドを追加したバージョンはこちらです :ema_variation__filter_amp_bands_amp_mtf.ex4

Mladen あなたの専門知識には本当に感謝しています。

敬具

secretcode

 
tfi_markets:
こんにちは、MQLコーダーです。

私のEAのバグについて質問があります。カウンタートレンドのポジションを開くことができないようです(添付のスクリーンショットを参照)。

取引は終了しているのですが、新しく指定されたトレンドの方向に沿って新しい取引を開くことができません。

// Indicator HMA NMC

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

//+------------------------------------------------------------------+

//| BUY |

//+------------------------------------------------------------------+

if(trendc!=trendp)

{

if(trendc==1) // code for buy

OpenBuy();

return(0);

}

//+------------------------------------------------------------------+

//| SELL |

//+------------------------------------------------------------------+

if(trendc==-1) // code for sell

{

OpenSell();

return(0);

}

}

[/CODE]

[CODE]

void CheckForClose()

{

RefreshRates();

double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

for(int i=0;i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

//+-------------------------------------------------------------------------------+

//| Close BUY |

//+-------------------------------------------------------------------------------+

if(trendc_c!=trendp_c) // Check trend

{

if(OrderType()==OP_BUY)

{

if(trendc_c==-1) //is buy?

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

//+--------------------------------------------------------------------------------+

//| Close SELL |

//+--------------------------------------------------------------------------------+

if(trendc_c!=trendp_c)

{

if(OrderType()==OP_SELL)

{

if(trendc_c==1) // SELL

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == false)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) Alert(ErrAlert);

ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

}

}

よろしくお願いします。

tfi_markets

両方のブレークステートメントを1行上に移動させてみてください("}"の中に入るように)。

 

こんにちは、Mladenです。

このコードでどこが間違っているのか、親切に教えていただけませんか?

添付のインディケータAll Pivotsですが、前日のオープンライン、前日のクローズライン、当日のオープンラインも表示されるように作り直しました。

しかし、このインジケータは一貫性がありません。ピボットは常に正しく表示されますが、私が追加した日足オープン、前日オープン、クローズ線が表示されることはほとんどありません。

コードはピボットのコードと同じに見えるので、すべて表示されるはずで、時々表示されますが、いつも表示されるわけではありません。何か間違ったことをしたのでしょうか。

ありがとうございました。

PG

オールピボット_デイリー.mq4

ファイル:
 
pgtips:
Mladenさん、こんにちは。

このコードでどこが間違っているのか、親切に教えてください。

添付のインディケータAll Pivotsは、前日のオープンライン、前日のクローズライン、当日のオープンラインも表示されるように作り直しました。

しかし、このインジケータは一貫性がありません。ピボットは常に正しく表示されますが、私が追加した日足オープン、前日オープン、クローズ線が表示されることはほとんどありません。

コードはピボットのコードと同じに見えるので、すべて表示されるはずで、時々表示されますが、いつも表示されるわけではありません。何か間違ったことをしたのでしょうか。

ありがとうございました。

PG

allpivots_daily.mq4

PG

問題なく動作します(作成されたオブジェクトのリストを参照してください)。価格が重なっていないかどうか確認してください(それによって、いくつかの行が見えなくなる可能性があります)。

また、ObjectDel()関数で新しく作成した行を追加することを忘れないでください。

ファイル:
objects.gif  49 kb
 

Mladenさん、ありがとうございます!何度も確認 しましたが、「"」の中の行の名前にうるさいようで、私の期待とは違っていました。

いつもながら、お忙しい中、ありがとうございます。

PG

mladen:
PG

問題なく動作しています(作成されたオブジェクトのリストをご覧ください)。価格が重なっていないかチェックする(それが原因で、いくつかの線が見えなくなる可能性があります)。

 
pgtips:
Mladenさん、ありがとうございます。何度も確認しましたが、「"」の中の行の名前にうるさいようです。

いつもながら、お時間とご協力に感謝いたします。

PG

オブジェクトの名前は常に一意でなければなりませんが、私が見た限りでは、あなたはそれを世話しました。

 

https://www.mql5.com/en/forum/174385/page263 よろしくお願いします。

 

Mladenさん、ありがとうございます。

私は問題を持っており、そのことです。

私の最初の信号は、最後の販売後に購入し、私はバーが抵抗またはコードの "srUp "の上に閉じた後である必要があります。

売りも同じで、バーがサポートまたは "srDown "の下で閉じられなければなりません。

どのように私は、コード上のこれを修正することができますか?

そして第二に、前に尋ねたナンバーワンだった、私は別の色で販売した後、最初の信号の買いを表示するために私のコードで修正することができますか?

#property strict

#プロパティ indicator_chart_window

#プロパティ indicator_buffers 4

#property indicator_color1 clrLime(インジケーターカラー1)。

#property indicator_color2 clrRed (インジケータカラー2)

#プロパティ indicator_color3 clrMagenta

#property indicator_color4 clrCyan (インジケーターカラー4)

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy)を設定します。

SetIndexBuffer(1,FirstSell)を設定します。

SetIndexBuffer(2,Buy)を設定します。

SetIndexBuffer(3,Sell)を設定します。

for(int i=0; i<4; i++) { {インデックススタイル(1)を設定します。

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}を設定します。

SetIndexArrow (0,233)を設定します。

SetIndexArrow (1,234)。

SetIndexArrow (2,233).SetIndexArrow(2,233)。

SetIndexArrow (3,234)。

return(INIT_SUCCEEDED);}.

void OnDeinit(const int reason) {}

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 lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--){

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUEです。

datetime when=Time;

int w=iBarShift(NULL,PERIOD_H4, when),

x=iBarShift(NULL,PERIOD_H1,時),

y=iBarShift(NULL,PERIOD_M15,when)。

z=iBarShift(NULL,PERIOD_M5,when)。

double srUpH4 = iCustom(NULL,PERIOD_H4, "Support and Resistance (Barry)",0,w)。

srDownH4 = iCustom(NULL,PERIOD_H4, "Support and Resistance (Barry)",1,w)です。

MidH4 = (srUpH4+srDownH4)/2,

srUpH1 = iCustom(NULL,PERIOD_H1, "Support and Resistance (Barry)",0,x)です。

srDownH1 = iCustom(NULL,PERIOD_H1, "サポートとレジスタンス(バリー)",1,x).MidH1 = (srUpH1,srDownH4) / 2,

MidH1 = (srUpH1+srDownH1)/2,

srUp15M = iCustom(NULL,PERIOD_M15, "Support and Resistance (Barry)",0,y)とします。

srDown15M = iCustom(NULL,PERIOD_M15, "Support and Resistance (Barry)",1,y).この場合、srDown15Mは1.0となります。

Mid15M=(srUp15M+srDown15M)/2.Mid15M=(srUp15M+srDown15M)/2,

srUp5M = iCustom(NULL,PERIOD_M5, "Support and Resistance (Barry)",0,z)です。

srDown5M = iCustom(NULL,PERIOD_M5, "Support and Resistance (Barry)",1,z)です。

Mid5M = (srUp5M+srDown5M)/2,

srUp = iCustom(NULL,0, "Support and Resistance (Barry)",0,i)。

srDown = iCustom(NULL,0, "Support and Resistance (Barry)",1,i).となります。

if(ClosesrUp) { // 最初のシグナル買い

買い=低ポイント; }

else {

買い=EMPTY_VALUE; }。

if(Close>Mid5M && Close>srUp) { // 第2のシグナル買い

買い=Low-_Point; }

else {

買い=EMPTY_VALUE; } } } else {

if(Close>MidH4 && Close>Mid15M && Close<srDown) { // 1回目のシグナル 売り

売り=High+_Point; }.

else {

売り=EMPTY_VALUE; } } else { 売り=High+_Point; } } 売り=EMPTY_VALUE

if(Close<Mid5M && Close<srDown) { // 2回目のシグナル売り

売り=High+_Point; }.

else {

売り=EMPTY_VALUE; }}。

return(rates_total);}になります。

これは、私はアラートのために持っているものです、私はそれを使用するか、代わりにアラート(t("ポップアップ用のテキスト"))を使用しなければなりませんか?

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i)の場合{。

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)))。

lastAlert=i;}}となります。

mladenさんありがとうございました。

ファイル:
signals.png  31 kb