Birkaç türdeki değerlerden bileşik bir sonuç döndüren işlevi uygulamak gerekiyor, lütfen bunu nasıl daha iyi yapacağımı söyler misiniz? Yoksa bu fonksiyonun değerleri için sadece global değişkenler mi kullanmalıyız?
//+------------------------------------------------------------------+//| 10pips.mq4 |//| fortrader |//| www.fortrader.ru |//+------------------------------------------------------------------+#property copyright "fortrader"#property link "www.fortrader.ru"externint TakeProfit_Buy = 10 ;
externint StopLoss_Buy = 5000 ;
externint TrailingStop_Buy = 5000 ;
externint TakeProfit_Sell = 10 ;
externint StopLoss_Sell = 5000 ;
externint TrailingStop_Sell = 5000 ;
externdouble Lots = 0.01 ;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return ( 0 );
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return ( 0 );
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----if (Volume[ 0 ] > 1000 ) return ( 0 );
// Объявляем переменныеint total, cnt;
total= OrdersTotal ();
// Проверка средствif ( AccountFreeMargin ()<( 1000 *Lots))
{
Print ( "We have no money. Free Margin = " , AccountFreeMargin ());
return ( 0 );
}
if (total< 1000 )
{
// Открытие сделкокOrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 ,Bid-StopLoss_Buy* Point ,Ask+TakeProfit_Buy* Point , "Покупаем" , 16384 , 0 , Green );
Sleep ( 10 ); //10 секундRefreshRates ();
OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 ,Ask+StopLoss_Sell* Point ,Bid-TakeProfit_Sell* Point , "Продаем" , 16385 , 0 , Red );
}
if (total== 1000 )
{
OrderSelect ( 0 , SELECT_BY_POS, MODE_TRADES);
if ( OrderType ()==OP_BUY)
{
OrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 ,Bid-StopLoss_Buy* Point ,Ask+TakeProfit_Buy* Point , "Покупаем" , 16384 , 0 , Green );
}
if ( OrderType ()==OP_SELL)
{
OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 ,Ask+StopLoss_Sell* Point ,Bid-TakeProfit_Sell* Point , "Продаем" , 16385 , 0 , Red );
}
}
for (cnt=total- 1 ;cnt>= 0 ;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderType ()==OP_BUY)
{
if (TrailingStop_Buy> 0 )
{
if (Bid- OrderOpenPrice ()> Point *TrailingStop_Buy) // Bid - цена покупки
{
if ( OrderStopLoss ()<Bid- Point *TrailingStop_Buy)
{
OrderModify ( OrderTicket (), OrderOpenPrice (),Bid- Point *TrailingStop_Buy, OrderTakeProfit (), 0 , Green );
return ( 0 );
}
}
}
}
if ( OrderType ()==OP_SELL)
{
if (TrailingStop_Sell> 0 )
{
if (( OrderOpenPrice ()-Ask)>( Point *TrailingStop_Sell)) // Ask - цена продажи
{
if (( OrderStopLoss ()>(Ask+ Point *TrailingStop_Sell)) || ( OrderStopLoss ()== 0 ))
{
OrderModify ( OrderTicket (), OrderOpenPrice (),Ask+ Point *TrailingStop_Sell, OrderTakeProfit (), 0 , Red );
return ( 0 );
}
}
}
}
}
//----return ( 0 );
}
//+------------------------------------------------------------------+
Bir danışmanım var, basit bir tane, aptalca belirli bir miktara kadar alım satım alım satımları açar ve SL ve TP'yi ayarlar (benim için önemli olan alım satım sayısıdır ). Dört ondalık basamakta iyi çalışıyor, ancak test cihazında çalışmasına rağmen beş ondalık basamakta çalışmak istemiyor. Söyle bana burada ne yapılabilir?
utyff : Bir danışmanım var, basit bir tane, aptalca belirli bir miktara kadar alım satım alım satımları açar ve SL ve TP'yi ayarlar (benim için önemli olan alım satım sayısıdır). Dört ondalık basamakta iyi çalışıyor, ancak test cihazında çalışmasına rağmen beş ondalık basamakta çalışmak istemiyor. Söyle bana burada ne yapılabilir?
utyff : Bir danışmanım var, basit bir tane, aptalca belirli bir miktara kadar alım satım alım satımları açar ve SL ve TP'yi ayarlar (benim için önemli olan alım satım sayısıdır). Dört ondalık basamakta iyi çalışıyor, ancak test cihazında çalışmasına rağmen beş ondalık basamakta çalışmak istemiyor. Söyle bana burada ne yapılabilir?
Her şeyden önce, günlüğe bakın: danışman orada hata mesajları bırakır. Ve sonra, aynı hatalara göre, neyin ve neden olduğunu bulun. Ayrıca, başkalarının da sizin için aynısını yapacağını umarak, kendi başınıza analiz etmeyi öğrenmeniz ve burada kod ayaklarını atmamanız arzu edilir.
Merhaba. Söyleyin bana, danışman piyasa fiyatından pozisyon açmalı, bir emrin açılıp açılmadığını ve açılış fiyatını nasıl belirleyebilirim?
https://book.mql4.com/en/
Şimdiki zaman nasıl öğrenilir?
Bir danışmanım var, basit bir tane, aptalca belirli bir miktara kadar alım satım alım satımları açar ve SL ve TP'yi ayarlar (benim için önemli olan alım satım sayısıdır). Dört ondalık basamakta iyi çalışıyor, ancak test cihazında çalışmasına rağmen beş ondalık basamakta çalışmak istemiyor. Söyle bana burada ne yapılabilir?
Kaymayı artırın ve fiyatları normalleştirin
Merhaba. Söyleyin bana, danışman piyasa fiyatından pozisyon açmalı, bir emrin açılıp açılmadığını ve açılış fiyatını nasıl belirleyebilirim?
Bir danışmanım var, basit bir tane, aptalca belirli bir miktara kadar alım satım alım satımları açar ve SL ve TP'yi ayarlar (benim için önemli olan alım satım sayısıdır). Dört ondalık basamakta iyi çalışıyor, ancak test cihazında çalışmasına rağmen beş ondalık basamakta çalışmak istemiyor. Söyle bana burada ne yapılabilir?