Scriverò un EA gratuitamente - pagina 63

 
Salve. Puoi usare questa strategia per scrivere un consulente https://www.youtube.com/watch?v=V58JIhy2rw4. O hai qualche consulente che ristagna sul posto o è leggermente in nero.... Per i guadagni sullo sconto sul sito fxcash.ru. Grazie. Per qualsiasi cosa, contattatemi su facebook https://vk.com/id16112208 o di persona.
Метод торговли на FOREX (Безубыточный)
Метод торговли на FOREX (Безубыточный)
  • 2016.01.11
  • www.youtube.com
САЙТ – http://forexbid.jimdo.com/strategy/metod/ ФОРУМ – http://forex.forumex.ru/viewtopic.php?f=5&t=45&p=73#p73 Возврат спреда http://www.getforexrebate.com...
 
Sergey Zaitsev:
Salve. Puoi scrivere un EA su questa strategia https://www.youtube.com/watch?v=V58JIhy2rw4. O non hai qualche altro EA, che ristagna sul posto o va in profitto un po' .... Per i guadagni sullo sconto sul sito fxcash.ru. Grazie. Se quel bip in uk https://vk.com/id16112208 o in privato.
Sì, ho scritto questo tipo di gufi.
****
Per uno sconto, va bene. Ottiene un sacco di lotti senza un sacco di drawdown.
Ma durante un lungo appartamento, può perdere ...
 
Non è che si tratta di un lungo appartamento, ma esattamente quando l'appartamento si espande? È possibile ottenerne uno?
 
il vostro servizio di sconto globegain.com va bene? perché forex4u dà così tanto - $18.6 per lotto....insta - $14.3... è reale?
 

Buon pomeriggio!

Ho deciso di robotizzare un po' il mio trading. Ho usato un Expert Advisor di tendenza dal terminale MT4"Moving Average". Ho deciso di usare il mio EA dal terminale MT4 e ho fatto alcune leggere modifiche. Ho aggiunto un'altra maschera, cambiato le condizioni di entrata e uscita, aggiunto stop e profitto e limitato il tempo di apertura. Vorrei aggiungere altro.

1) La capacità di aprire due ordini contemporaneamente con stop loss regolabile, take profit, spostamento a zero perdite.

2) Numero regolabile di voci al giorno.

3) Possibilità regolabile di entrare il giorno successivo quando un trade è aperto.

4)Uscita regolabile da stop loss, no loss o take profit.

5)Eliminazione del calcolo del rischio massimo. (bisogno particolare non lo vedo, inoltre non capisco come calcola il rischio, l'impressione che dal fondo, i lotti sono stati aperti poi 0,10 poi 1,00)

6) Non funziona correttamente sulla coppia di valute USDJPY

Forse qualcosa da correggere, pulire per migliorare il lavoro dell'EA. Aiuto o suggerimenti.

Lavora su più di dieci grafici allo stesso tempo, in ogni finestra del grafico della coppia di valute ha il proprio EA. Il codice è allegato. Grazie a tutti quelli che rispondono.

//+------------------------------------------------------------------+
//|                                                      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
//--- Inputs
input double SL             =500; //стоп лос
input double TakeProfit     =1000; //тейк профит
input double Lots           =0.01; //розмер лота
//input double MaximumRisk    =0.1; //отключил не понятна логика расчета
input double DecreaseFactor = 3; //фактор снижение(наверно проскальзывание)
input int    MovingPeriod1  =36; //медленная средняя
input int    MovingPeriod2  =12; //быстрая средняя
input int    MovingShift1   =10; //сдвиг медленной средней
input int    MovingShift2   = 0; //сдвиг быстрой средней
extern int   TimeStart      = 8; //время начала торгов
extern int   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);
   else       return(-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  //функция нового тика                                                |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//---
  }
//+------------------------------------------------------------------+
 
Sergey Zaitsev:
Salve. Puoi usare questa strategia per scrivere un consulente https://www.youtube.com/watch?v=V58JIhy2rw4. O hai qualche consulente che ristagna sul posto o è leggermente in nero.... Per i guadagni sullo sconto sul sito fxcash.ru. Grazie. Se quel bip in Ek https://vk.com/id16112208 o in privato.

Guarda il ramo Avalanche, ci sono consiglieri per questo TS.
 

Ciao!

Posso avere un aiuto? L'Expert Advisor recupera i trade ogni tick. Come faccio a scrivere il codice per togliere circa 5 scambi o solo quanti ne voglio?

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

oid OnTick()

{

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point, "Batsasho",1,0,Red);

}

Cosa devo cambiare o aggiungere al codice?

Grazie!

 

Se non lo rendo difficile puoi rispondere ***

Grazie!

 

Ho provato a rifare i modelli già pronti, ma alla fine danno un paio di errori, mi serve solo un gufo:

1) apre una posizione di acquisto se la candela chiusa è rialzista, e una posizione di vendita se la candela chiusa è ribassista.

2) e così via dopo OGNI candela.

Ho la seconda condizione non funziona.

Se qualcuno può aiutarmi, gliene sarò molto grato.

 
alstefanov:

Posso avere un aiuto? L'Expert Advisor recupera i trade ad ogni tick. Come posso scrivere il codice per disegnare circa 5 scambi o solo quanti ne voglio?

Cosa devo cambiare o aggiungere al codice?

Dovrei aggiungere un ciclo e limitare il numero di ordini prima di eseguire OrderSend.
Motivazione: