Bu yüzden ticaretimi biraz robotize etmeye karar verdim. MT4 terminalindeki trend danışmanına göre " HareketliOrtalama ". Bu türden bir vagon ve küçük bir danışman arabası var, ancak tanıştığımlardan hiçbiri gereksinimlerimi tam olarak karşılamıyor. Genel olarak danışmanı MT4 terminalinden durdurmaya karar verdi, biraz değiştirdi. Üzerine bir tik daha ekledim, giriş-çıkış koşullarını değiştirdim, stop ekledim, kar ettim, fırsat açma süresini sınırladım. Daha fazlasını eklemek istiyorum.
1) Ayarlanabilir stop loss, kayıpsıza geçiş ile aynı anda iki emir açabilme, kar almak.
2) Ayarlanabilir ziyaret sayısı gün.
3) Ayarlanabilir bir sonraki güne açık işlem ile giriş imkanı.
4) Zararı durdur, zararı yok veya kârı alarak çıkış yapın.
5) Maksimum risk hesaplamasının silinmesi. (Buna pek gerek görmüyorum, ayrıca riski nasıl hesapladığını hala anlamıyorum, görünen o ki fenerden lotlar 0.10 ya da 1.00 açılmış)
6) USDJPY döviz çiftinde düzgün çalışmıyor
Belki de danışmanın çalışmasını iyileştirmek için bir şeyler düzeltilmeli, temizlenmelidir. Yardım veya tavsiye.
Ondan fazla grafik aynı anda çalışır, döviz çifti grafiğinin her penceresinin kendi danışmanı vardır. Kodu ekliyorum. Cevap veren herkese TEŞEKKÜRLER.
//+------------------------------------------------------------------+//| MA_MA_1.mq4 |//| Copyright 2017, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2017, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//#property strict#define MAGICMA 20131112//--- Inputsinputdouble SL = 500 ; //стоп лосinputdouble TakeProfit = 1000 ; //тейк профитinputdouble Lots = 0.01 ; //розмер лота//input double MaximumRisk =0.1; //отключил не понятна логика расчетаinputdouble DecreaseFactor = 3 ; //фактор снижение(наверно проскальзывание)inputint MovingPeriod1 = 36 ; //медленная средняяinputint MovingPeriod2 = 12 ; //быстрая средняяinputint MovingShift1 = 10 ; //сдвиг медленной среднейinputint MovingShift2 = 0 ; //сдвиг быстрой среднейexternint TimeStart = 8 ; //время начала торговexternint TimeStop = 20 ; //время окончания торгов//+------------------------------------------------------------------+//| Calculate open positions //считаем открытые позиции |//+------------------------------------------------------------------+int CalculateCurrentOrders( string symbol)
{
int buys= 0 ,sells= 0 ;
//---for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== false ) break ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MAGICMA)
{
if ( OrderType ()== OP_BUY ) buys++;
if ( OrderType ()== OP_SELL ) sells++;
}
}
//--- return orders volume //объём ордеров на возвратif (buys> 0 ) return (buys);
elsereturn (-sells);
}
//+------------------------------------------------------------------+//| Calculate optimal lot size //расчет оптимального размера лота |//+------------------------------------------------------------------+double LotsOptimized()
{
double lot=Lots;
int orders= HistoryTotal (); // history orders total (история заказов всего)int losses= 0 ; // number of losses orders without a break (количество потерь заказов без перерыва)//--- select lot size //ОТКЛЮЧИЛ выбор размер лота. //lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);//(логика выбора мне не понятна)//--- calcuulate number of losses orders without a break (Расчет количества заказов на потери без перерыва)// if(DecreaseFactor>0)// {// for(int i=orders-1;i>=0;i--)// {// if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)// {// Print("Error in history!");// break;// }// if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)// continue;//---// if(OrderProfit()>0) break;// if(OrderProfit()<0) losses++;// }// if(losses>1)// lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);// }//--- return lot size (розмер возвращаемого лота)if (lot< 0.1 ) lot= 0.1 ;
return (lot);
}
//+------------------------------------------------------------------+//| Check for open order conditions //проверка условий для открытия ордера |//+------------------------------------------------------------------+void CheckForOpen()
{
double ma1; //медленная средняяdouble ma2; //быстрая средняяint res;
//--- go trading only for first tiks of new bar// торговать только на первом тике нового бараif ( Volume [ 0 ]> 1 ) return ;
//--- get Moving Average //получение скользящих средних
ma1= iMA ( NULL , 0 ,MovingPeriod1,MovingShift1, MODE_SMA , PRICE_CLOSE , 0 ); //медленная
ma2= iMA ( NULL , 0 ,MovingPeriod2,MovingShift2, MODE_SMA , PRICE_CLOSE , 0 ); //быстрая//--- sell conditions //условия для продажиif (ma1<ma2 && Close [ 1 ]<ma1 && TimeHour ( TimeCurrent ())>TimeStart && TimeHour ( TimeCurrent ())<TimeStop)
{
res= OrderSend ( Symbol (), OP_SELL ,LotsOptimized(), Bid , 3 , Bid +SL* Point , Bid -TakeProfit* Point , "" ,MAGICMA, 0 ,Red);
return ;
}
//--- buy conditions //условия для покупкиif (ma1>ma2 && Close [ 1 ]>ma1 && TimeHour ( TimeCurrent ())>TimeStart && TimeHour ( TimeCurrent ())<TimeStop)
{
res= OrderSend ( Symbol (), OP_BUY ,LotsOptimized(), Ask , 3 , Ask -SL* Point , Ask +TakeProfit* Point , "" ,MAGICMA, 0 ,Blue);
return ;
}
//---
}
//+------------------------------------------------------------------+//| Check for close order conditions //проверка условий для закрытия ордера |//+------------------------------------------------------------------+void CheckForClose()
{
double ma1; //медленнаяdouble ma2; //быстрая//--- go trading only for first tiks of new bar// торговать толькона тике нового бараif ( Volume [ 0 ]> 1 ) return ;
//--- get Moving Average //получение средних
ma1= iMA ( NULL , 0 ,MovingPeriod1,MovingShift1, MODE_SMA , PRICE_CLOSE , 0 ); //медленная
ma2= iMA ( NULL , 0 ,MovingPeriod2,MovingShift2, MODE_SMA , PRICE_CLOSE , 0 ); //быстрая//---for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== false ) break ;
if ( OrderMagicNumber ()!=MAGICMA || OrderSymbol ()!= Symbol ()) continue ;
//--- check order type //проверка типа ордераif ( OrderType ()== OP_BUY )
{
if ( Close [ 1 ]<ma2 && Open [ 2 ]> Close [ 1 ] && ma1<ma2) //(Open[1]>ma && Close[1]<ma)
{
if (! OrderClose ( OrderTicket (), OrderLots (), Bid , 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
break ;
}
if ( OrderType ()== OP_SELL )
{
if ( Close [ 1 ]>ma2 && Open [ 2 ]< Close [ 1 ] && ma1>ma2)
{
if (! OrderClose ( OrderTicket (), OrderLots (), Ask , 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
break ;
}
}
//---
}
//+------------------------------------------------------------------+//| OnTick function //функция нового тика |//+------------------------------------------------------------------+voidOnTick ()
{
//--- check for history and tradingif ( Bars < 100 || IsTradeAllowed ()== false )
return ;
//--- calculate open orders by current symbolif (CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpen();
else CheckForClose();
//---
}
//+------------------------------------------------------------------+
İyi günler, sevgili varlıklar. Basit bir Expert Advisor'a ihtiyacım var, hazır şablonları yeniden yapmaya çalıştım ve sonuç olarak bir iki hata veriyor. ama sadece bir baykuşa ihtiyacın var:
Merhaba. Bu strateji için Uzman Danışman yazabilirsiniz https://www.youtube.com/watch?v=V58JIhy2rw4. Veya fxcash.ru sitesinde indirimden para kazanmak için zamanı işaretleyen veya biraz artı olan herhangi bir danışmanınız yok. Teşekkürler.Bir şey olursa VK https://vk.com/id16112208 veya kişisel olarak yazın.
Güzel gün!
Bu yüzden ticaretimi biraz robotize etmeye karar verdim. MT4 terminalindeki trend danışmanına göre " Hareketli Ortalama ". Bu türden bir vagon ve küçük bir danışman arabası var, ancak tanıştığımlardan hiçbiri gereksinimlerimi tam olarak karşılamıyor. Genel olarak danışmanı MT4 terminalinden durdurmaya karar verdi, biraz değiştirdi. Üzerine bir tik daha ekledim, giriş-çıkış koşullarını değiştirdim, stop ekledim, kar ettim, fırsat açma süresini sınırladım. Daha fazlasını eklemek istiyorum.
1) Ayarlanabilir stop loss, kayıpsıza geçiş ile aynı anda iki emir açabilme, kar almak.
2) Ayarlanabilir ziyaret sayısı gün.
3) Ayarlanabilir bir sonraki güne açık işlem ile giriş imkanı.
4) Zararı durdur, zararı yok veya kârı alarak çıkış yapın.
5) Maksimum risk hesaplamasının silinmesi. (Buna pek gerek görmüyorum, ayrıca riski nasıl hesapladığını hala anlamıyorum, görünen o ki fenerden lotlar 0.10 ya da 1.00 açılmış)
6) USDJPY döviz çiftinde düzgün çalışmıyor
Belki de danışmanın çalışmasını iyileştirmek için bir şeyler düzeltilmeli, temizlenmelidir. Yardım veya tavsiye.
Ondan fazla grafik aynı anda çalışır, döviz çifti grafiğinin her penceresinin kendi danışmanı vardır. Kodu ekliyorum. Cevap veren herkese TEŞEKKÜRLER.
Merhaba. Bu strateji için Uzman Danışman yazabilirsiniz https://www.youtube.com/watch?v=V58JIhy2rw4. Veya fxcash.ru sitesinde indirimden para kazanmak için zamanı işaretleyen veya biraz artı olan herhangi bir danışmanınız yok. Teşekkür ederim VK https://vk.com/id16112208 veya kişisel olarak yazarsanız.
Lavin'in konusuna bakın, bu aracın danışmanları var.
Merhaba!
Bana yardımcı olabilir misiniz? EA her tikte işlemleri açar. Yaklaşık 5 işlem açmak için kodu nasıl yazmalıyım veya sadece kaç tane istiyorum?
harici int tp=50;
dış int sl=200;
dış çift lot=0.01;
oid OnTick()
{
OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsaho",1,0,Red);
}
Neler değiştirilmeli, koda eklenmeli?
Teşekkür ederim!
Zorlaştırmıyorsam cevap verebilirsin ***
Teşekkür ederim!
İyi günler, sevgili varlıklar. Basit bir Expert Advisor'a ihtiyacım var, hazır şablonları yeniden yapmaya çalıştım ve sonuç olarak bir iki hata veriyor. ama sadece bir baykuşa ihtiyacın var:
1) kapalı mum boğa ise açık alım pozisyonları ve kapalı mum düşüş ise satış pozisyonu.
2) ve böylece HER mumdan sonra.
İkinci koşulu sağlayamıyorum.
eğer biri yardım edebilirse çok minnettar olurum
Bana yardımcı olabilir misiniz? EA her tikte işlemleri açar. Yaklaşık 5 işlem açmak için kodu nasıl yazmalıyım veya sadece kaç tane istiyorum?
Neler değiştirilmeli, koda eklenmeli?