Tünaydın! Çoklu para birimi özellikleri ekleyerek standart Macd Sample Expert Advisor'ı yeniden tasarladım. Sorun şu ki, işlemleri çok para birimli bir tüccar olarak açmasına rağmen, bunları yalnızca kâr veya takip eden stop ile kapatıyor - ancak durumu değiştirdikten sonra kapanış da danışmanda belirtilmiş olsa da. Lütfen topluluğumuza yardım edin :)
//+------------------------------------------------------------------+//| MACD Sample_1.mq4 |//| Corp. |//| http:// |//+------------------------------------------------------------------+externdouble Lots = 0.1 ;
externdouble TrailingStop = 50 ;
externdouble MACDOpenLevel= 3 ;
externdouble MACDCloseLevel= 2 ;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+string lSymbol;
int init(){lSymbol= Symbol (); return ( 0 );}
int deinit(){ return ( 0 );}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent; //значения индикаторовdouble SignalPrevious,bid,ask,point,digits;
int cnt, ticket, total; //вычисляемые значения
total=SymbolOrdersTotal(lSymbol);
if (total< 1 )
{
bid = MarketInfo (lSymbol,MODE_BID);
ask = MarketInfo (lSymbol,MODE_ASK);
point = MarketInfo (lSymbol,MODE_POINT);
digits= MarketInfo (lSymbol,MODE_DIGITS);
// on a chart of less than 100 barsif ( Bars < 100 )
{
Print ( "bars less than 100" );
return ( 0 );
}
// to simplify the coding and speed up access// data are put into internal variables
MacdCurrent= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 0 );
MacdPrevious= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 1 );
SignalCurrent= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_SIGNAL, 0 );
SignalPrevious= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_SIGNAL, 1 );
// no opened orders identifiedif ( AccountFreeMargin ()<( 1000 *Lots))
{
Print ( "We have no money. Free Margin = " , AccountFreeMargin ());
return ( 0 );
}
// check for long position (BUY) possibilityif (MacdCurrent< 0 && MacdCurrent>SignalCurrent && MacdPrevious<=SignalPrevious &&
MathAbs (MacdCurrent)>(MACDOpenLevel*point) )
{
ticket= OrderSend (lSymbol,OP_BUY,Lots,ask, 3 , 0 , 0 , "macd sample new" , 12345 , 0 , Green );
if (ticket> 0 )
{
if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "BUY order opened : " , OrderOpenPrice (), " as " , lSymbol);
}
elsePrint ( "Error opening BUY order :" , GetLastError (), " as " , lSymbol);
return ( 0 );
}
// check for short position (SELL) possibilityif (MacdCurrent> 0 && MacdCurrent<SignalCurrent && MacdPrevious>=SignalPrevious &&
MacdCurrent>(MACDOpenLevel*point) )
{
ticket= OrderSend (lSymbol,OP_SELL,Lots,bid, 3 , 0 , 0 , "macd sample new" , 12345 , 0 , Red );
if (ticket> 0 )
{
if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "SELL order opened : " , OrderOpenPrice (), " as " , lSymbol);
}
elsePrint ( "Error opening SELL order : " , GetLastError (), " as " , lSymbol);
return ( 0 );
}
return ( 0 );
}
// it is important to enter the market correctly, // but it is more important to exit it correctly... for (cnt= 0 ;cnt<total;cnt++)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderType ()<=OP_SELL && // check for opened position OrderSymbol ()==lSymbol) // check for symbol
{
if ( OrderType ()==OP_BUY) // long position is opened
{
// should it be closed?if (MacdCurrent> 0 && MacdCurrent<SignalCurrent && MacdPrevious>=SignalPrevious &&
MacdCurrent>(MACDCloseLevel*point))
{
OrderClose ( OrderTicket (), OrderLots (),bid, 3 , Violet ); // close positionreturn ( 0 ); // exit
}
// check for trailing stopif (TrailingStop> 0 )
{
if (Bid- OrderOpenPrice ()> Point *TrailingStop)
{
OrderModify ( OrderTicket (), OrderOpenPrice (),Bid- Point *TrailingStop, OrderTakeProfit (), 0 , Green );
return ( 0 );
}
}
}
else// go to short position
{
// should it be closed?if (MacdCurrent< 0 && MacdCurrent>SignalCurrent &&
MacdPrevious<=SignalPrevious && MathAbs (MacdCurrent)>(MACDCloseLevel*point))
{
OrderClose ( OrderTicket (), OrderLots (),ask, 3 , Violet ); // close positionreturn ( 0 ); // exit
}
// check for trailing stopif (TrailingStop> 0 )
{
if (( OrderOpenPrice ()-Ask)>( Point *TrailingStop))
{
OrderModify ( OrderTicket (), OrderOpenPrice (),Ask+ Point *TrailingStop, OrderTakeProfit (), 0 , Red );
return ( 0 );
}
}
}
}
}
return ( 0 );
}
int SymbolOrdersTotal( string lSymbol)
{
int Res= 0 ;
int total= OrdersTotal ();
for ( int i= 0 ;i<total;i++)
{
if ( OrderSelect (i, SELECT_BY_POS))
{
if ( OrderSymbol ()==lSymbol)
{
Res++;
}
}
}
return (Res);
}
// the end.
Çocuklar, bana bununla nasıl başa çıkacağımı söyleyin, her şey yolunda gitmeden önce - raporlar operaya kaydedildi ... şimdi strateji test raporunu kaydetmeye çalışırken böyle saçmalıklar pencereden atılıyor.
Soru kaldırıldı. Anladım. Nedense bilgisayar html dosyalarını Word ile açmaya başladı ... onu opera olarak değiştirdi - her şey olması gerektiği gibi çalışıyor.
MQL4 Eğitiminden "tradingexpert.mq4" Uzman Danışmanı nasıl düzeltilir. Zararı durdur emrini kapattıktan sonra ne olacak - bu yönde yeni emirler artık açılmayacak ve danışman göstergeden ters yönde açılması için bir sinyal bekliyordu.
KimIV - "GetTypeLastClosePos()" işlevini kullanmam istendi. Başvurmaya çalıştım ama fırsatlar açılmıyor. Danışmanı nasıl düzelteceğimi söyle. İşte değişikliklerimin kırmızıyla vurgulandığı kod.
Forum üyeleri, söyle bana, bir danışman yazdım, hata yok, stratejist test cihazında test ediliyor, ancak bir demo hesabında işlem yapmıyor. ayarlarda, danışmanın ticaret yapmasına izin verilir. Sorun nedir, söyle bana?
Çocuklar, bana bununla nasıl başa çıkacağımı söyleyin, her şey yolunda gitmeden önce - raporlar operaya kaydedildi ... şimdi strateji test raporunu kaydetmeye çalışırken böyle saçmalıklar pencereden atılıyor.
Soru kaldırıldı. Anladım. Nedense bilgisayar html dosyalarını Word ile açmaya başladı ... onu opera olarak değiştirdi - her şey olması gerektiği gibi çalışıyor.
Belki html dosyalarınız varsayılan olarak not defteri ile açılır? varsayılan programlar sekmesinin altındaki kontrol paneline bakmayı deneyin
link1 : Forum üyeleri, söyle bana, bir danışman yazdım, hata yok, stratejist test cihazında test ediliyor, ancak bir demo hesabında işlem yapmıyor. ayarlarda, danışmanın ticaret yapmasına izin verilir. Sorun nedir, söyle bana?
ve sanırım bana kim telepatik olarak cevap veriyor ;)
belki de demo hesabının koda bir koşul eklemek gerekir.
İpucunu anladım ama maalesef kodu gönderemiyorum (
o zaman sadece bir şey tavsiye edebilirim - Print 'leri potansiyel olarak sorunlu tüm yerlere koyun ve burada ticaret yapmayan bir danışmanın günlüklerine sahibiz. Tabii ki, daha önce baskıları anlamadığınız sürece.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Çocuklar, bana bununla nasıl başa çıkacağımı söyleyin, her şey yolunda gitmeden önce - raporlar operaya kaydedildi ... şimdi strateji test raporunu kaydetmeye çalışırken böyle saçmalıklar pencereden atılıyor.
Soru kaldırıldı. Anladım. Nedense bilgisayar html dosyalarını Word ile açmaya başladı ... onu opera olarak değiştirdi - her şey olması gerektiği gibi çalışıyor.
Tünaydın. Bir acemi söyle.
MQL4 Eğitiminden "tradingexpert.mq4" Uzman Danışmanı nasıl düzeltilir. Zararı durdur emrini kapattıktan sonra ne olacak - bu yönde yeni emirler artık açılmayacak ve danışman göstergeden ters yönde açılması için bir sinyal bekliyordu.
KimIV - "GetTypeLastClosePos()" işlevini kullanmam istendi. Başvurmaya çalıştım ama fırsatlar açılmıyor. Danışmanı nasıl düzelteceğimi söyle. İşte değişikliklerimin kırmızıyla vurgulandığı kod.
Çocuklar, bana bununla nasıl başa çıkacağımı söyleyin, her şey yolunda gitmeden önce - raporlar operaya kaydedildi ... şimdi strateji test raporunu kaydetmeye çalışırken böyle saçmalıklar pencereden atılıyor.
Soru kaldırıldı. Anladım. Nedense bilgisayar html dosyalarını Word ile açmaya başladı ... onu opera olarak değiştirdi - her şey olması gerektiği gibi çalışıyor.
Belki html dosyalarınız varsayılan olarak not defteri ile açılır? varsayılan programlar sekmesinin altındaki kontrol paneline bakmayı deneyin
MQL4'te "son kapatılan siparişin türü OP_BUY ise" koşulunu nasıl yazacağımı söyleyin.
Forum üyeleri, söyle bana, bir danışman yazdım, hata yok, stratejist test cihazında test ediliyor, ancak bir demo hesabında işlem yapmıyor. ayarlarda, danışmanın ticaret yapmasına izin verilir. Sorun nedir, söyle bana?
Bunun gibi sorular için özel bir konu var.
Ah ah ))))))
ve sanırım bana kim telepatik olarak cevap veriyor ;)
belki de demo hesabının koda bir koşul eklemek gerekir.
İpucunu anladım ama maalesef kodu gönderemiyorum (
Ah ah ))))))
ve sanırım bana kim telepatik olarak cevap veriyor ;)
belki de demo hesabının koda bir koşul eklemek gerekir.
İpucunu anladım ama maalesef kodu gönderemiyorum (