Kodlama yardımı - sayfa 395

 

EA karşı pozisyon açmıyor

Merhaba MQL Kodlayıcıları,

EA'mdaki bir hatayla ilgili bir sorum var. Karşı trend pozisyonu açmıyor gibi görünüyor (ekli ekran görüntüsüne bakın).

İşlemi kapatıyor, ancak verilen yeni trend yönünü takip etmek için yeni bir işlem açmıyor.

// 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;

}

}

}

}

Şimdiden teşekkür ederim!

 
secretcode:
Sevgili Mladen

Bu gönderideki gibi ekli göstergeye 'bant eklemek' mümkün mü: https://www.mql5.com/en/forum/172894/page45

Bu gösterge elit kesimden ama üzerine bant ekleme şeklini beğendim

herhangi bir yardım için teşekkürler

gizli kod

gizli kod

İşte bantların eklendiği bir sürüm: ema_variation__filter_amp_bands_amp_mtf.ex4

 
mladen:
secretcode İşte bantların eklendiği bir sürüm: ema_variation__filter_amp_bands_amp_mtf.ex4

Teşekkürler Mladen uzmanlığını gerçekten takdir ediyorum

Samimi olarak

gizli kod

 
tfi_markets:
Merhaba MQL Kodlayıcıları,

EA'mdaki bir hatayla ilgili bir sorum var. Karşı trend pozisyonu açmıyor gibi görünüyor (ekli ekran görüntüsüne bakın).

İşlemi kapatıyor, ancak verilen yeni trend yönünü takip etmek için yeni bir işlem açmıyor.

// 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;

}

}

}

}

Şimdiden teşekkür ederim!

tfi_markets

Her iki break ifadesini bir satır yukarı taşımaya çalışın ("}" içinde olmak için)

 

Merhaba Mladen,

Bana bu kodda nerede yanlış yaptığımı söyleme nezaketinde bulunur musunuz?

Ekli gösterge Tüm Pivotlar, önceki gün açık çizgisini, önceki gün kapanış çizgisini ve mevcut gün açık çizgisini de gösterecek şekilde yeniden çalıştım.

ancak gösterge tutarsız. Pivotları her zaman doğru gösterir, ancak nadiren günlük açılış, önceki gün açılış ve kapanış satırları için eklenen kodumu gösterir.

Nedenini anlamıyorum, kod pivot kodla aynı görünüyor, bu yüzden hepsinin gösterilmesi gerekiyor ve bazen gösteriyor ama her zaman değil. Yanlış bir şey yaptım ama ne olduğundan emin değilim.

Çok teşekkürler

PG

allpivots_daily.mq4

Dosyalar:
 
pgtips:
Merhaba Mladen,

Bana bu kodda nerede yanlış yaptığımı söyleme nezaketinde bulunur musunuz?

Ekli gösterge Tüm Pivotlar, önceki gün açık çizgisini, önceki gün kapanış çizgisini ve mevcut gün açık çizgisini de gösterecek şekilde yeniden çalıştım.

ancak gösterge tutarsız. Pivotları her zaman doğru gösterir, ancak nadiren günlük açılış, önceki gün açılış ve kapanış satırları için eklenen kodumu gösterir.

Nedenini anlamıyorum, kod pivot kodla aynı görünüyor, bu yüzden hepsinin gösterilmesi gerekiyor ve bazen gösteriyor ama her zaman değil. Yanlış bir şey yaptım ama ne olduğundan emin değilim.

Çok teşekkürler

PG

allpivots_daily.mq4

PG

Sorunsuz çalışıyor (oluşturulan nesnelerin listesine bakın). Çakışan fiyatlar olup olmadığını kontrol edin (bu, bazı satırların görünmez olmasına neden olabilir)

Ayrıca yeni oluşturduğunuz satırları ObjectDel() işlevine de eklemeyi unutmayın.

Dosyalar:
objects.gif  49 kb
 

Teşekkürler Mladen, kontrol etmeye devam ettim ve beklediğim gibi olmayan "" içindeki satırların adları konusunda seçici görünüyor.

Her zaman olduğu gibi, zaman ayırdığınız ve yardım ettiğiniz için teşekkür ederim,

PG

mladen:
PG

Sorunsuz çalışıyor (oluşturulan nesnelerin listesine bakın). Çakışan fiyatlar olup olmadığını kontrol edin (bazı satırların görünmez olmasına neden olabilir)

 
pgtips:
Teşekkürler Mladen, kontrol etmeye devam ettim ve beklediğim gibi olmayan "" içindeki satırların adları konusunda seçici görünüyor.

Her zaman olduğu gibi, zaman ayırdığınız ve yardım ettiğiniz için teşekkür ederim,

PG

Nesnenin adları her zaman benzersiz olmalıdır - ama gördüğüm kadarıyla bununla ilgilendiniz.

 

Lütfen bunun için bana yardım edin https://www.mql5.com/en/forum/174385/page263

 

Teşekkürler, Mladen,

bir sorunum var ve şu:

ilk sinyalim son satıştan sonra al, çubuk kapandıktan sonra olması gerekiyor Direncin veya kodun "srUp"ının üstünde

satış için aynı, desteğin altında veya "srDown" altında çubuk kapalı olmalıdır

Bunu kodda nasıl düzeltebilirim?

Ve ikincisi, daha önce bir numara sorulmuştu, kodumda satış sonrası ilk sinyali farklı renkte gösterecek şekilde nasıl düzeltebilirim?

#mülkiyet katı

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 4

#özellik göstergesi_renk1 clrLime

#özellik göstergesi_renk2 clrRed

#özellik göstergesi_renk3 clrMagenta

#özellik göstergesi_renk4 clrCyan

#define 1 SATIN AL

#define SAT 2

çift Satın Al[],

Satmak[],

İlk Satın Al[],

İlk Satış[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,İlk Satış);

SetIndexBuffer(2,Satın Al);

SetIndexBuffer(3,Sat);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_OK,STYLE_SOLID,2;}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2.233);

SetIndexArrow (3.234);

dönüş(INIT_SUCCEEDED);}

geçersiz OnDeinit(const int nedeni) {}

int OnCalculate(const int oranları_toplam, const int önceki_hesaplanmış, const tarihsaat vesaat[],

const double &open[], const double &high[], const double &düşük[],

const double &kapat[], const uzun &tick_volume[], const uzun &hacim[],

const int &spread[]) {

statik int lastSignal=0;

for(int i=MathMin(oranlar_toplam-önceki_hesaplanmış, oranlar_toplam-1); i>=0; i--) {

FirstBuy=FirstSell=Satın=Sat=BOŞ_DEĞER;

tarihsaat ne zaman=Saat;

int w=iBarShift(NULL,PERIOD_H4, ne zaman),

x=iBarShift(NULL,PERIOD_H1, ne zaman),

y=iBarShift(NULL,PERIOD_M15,ne zaman),

z=iBarShift(NULL,PERIOD_M5, ne zaman);

double srUpH4 = iCustom(NULL,PERIOD_H4,"Destek ve Direnç (Barry)",0,w),

srDownH4 = iCustom(NULL,PERIOD_H4,"Destek ve Direnç (Barry)",1,w),

OrtaH4 = (srUpH4+srDownH4)/2,

srUpH1 = iCustom(NULL,PERIOD_H1,"Destek ve Direnç (Barry)",0,x),

srDownH1 = iCustom(NULL,PERIOD_H1,"Destek ve Direnç (Barry)",1,x),

OrtaH1 = (srUpH1+srDownH1)/2,

srUp15M = iCustom(NULL,PERIOD_M15,"Destek ve Direnç (Barry)",0,y),

srDown15M = iCustom(NULL,PERIOD_M15,"Destek ve Direnç (Barry)",1,y),

Orta15M = (srUp15M+srDown15M)/2,

srUp5M = iCustom(NULL,PERIOD_M5,"Destek ve Direnç (Barry)",0,z),

srDown5M = iCustom(NULL,PERIOD_M5,"Destek ve Direnç (Barry)",1,z),

Orta5M = (srUp5M+srDown5M)/2,

srUp = iCustom(NULL,0,"Destek ve Direnç (Barry)",0,i),

srDown = iCustom(NULL,0,"Destek ve Direnç (Barry)",1,i);

if(ClosesrUp) { // ilk sinyal satın al

Satın Al=Düşük-_Puan; }

başka {

Satın al=BOŞ_VALUE; }

if(Close>Mid5M && Close>srUp) { // ikinci sinyal satın al

Satın Al=Düşük-_Puan; }

başka {

Satın al=BOŞ_VALUE; }

if(Close>MidH4 && Close>Mid15M && Close<srDown) { // ilk sinyal satışı

Sat=Yüksek+_Puan; }

başka {

Sat=BOŞ_VALUE; }

if(Close<Mid5M && Close<srDown) { // ikinci sinyal satışı

Sat=Yüksek+_Puan; }

başka {

Sat=BOŞ_VALUE; }}

dönüş(oranlar_toplam);}

uyarılar için sahip olduğum şey bu, onu mu kullanayım yoksa onun yerine Alert(t("pop-up metni"))?

void SoundAlert(datetime i, string dir) {

statik tarihsaat lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s'de %s'de %s sinyali",dir,Symbol(),TimeToStr(i)));

lastAlert=i;}}

teşekkür ederim mladen

Dosyalar:
signals.png  31 kb
Neden: