Cosa c'è di sbagliato in questo? - pagina 4

 
sss2019:
Cos'altro può essere?

e questo lo verificherete da soli e lo saprete.
 
sergeev:

e questo lo verificherete da soli e lo saprete.
Perché lo consegnate così, non gli avete nemmeno chiesto il cognome. È un jolly, non c'è nemmeno bisogno di aprire un mandato, basta beccare silenziosamente in tasca.
 
Uno scrapple, però! Ecco, sì, sì.
 

Perché questo ordine non si apre, qual è l'errore?

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int init()
  {

  }



int deinit()
  {

  }



int start()
  {
double MaFast = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   
   if(OrdersTotal() == 0 && MaFast > MaSlow)
   {
   OrderSend(Symbol(),0,0.1,Ask,3,Ask+TakeProfit*Point,Ask-StopLoss*Point,"CommentA",0,0,Green);
   }else
   {
      if(GetLastError() != 0)
         {
         Alert("Ошибка", GetLastError());
         }
   }
   
   return(0);
  }
 
Come posso implementare l'apertura di un accordo solo sulla barra dei segnali?

Per esempio, una media mobile ne ha attraversato un'altra, si apre un trade, ma se si chiude questo trade, se ne aprirà un altro, anche dopo diverse barre dalla barra del segnale.
 
sss2019:
Come posso implementare l'apertura di un accordo solo sulla barra dei segnali?

Per esempio, una media mobile ne ha incrociata un'altra, si apre un trade, ma se si chiude questo trade, se ne aprirà un altro, anche a diverse barre di distanza dalla barra del segnale.
Sei sicuramente bandito da Google, e anche dalle nostre FAQ.
Prima di tutto, COME si ottiene il segnale di incrocio di due MA?

Poi cerca su Google qualcosa come aprire un solo ordine sito:mql4.com
 

Sì, so come aprire un ordine, ma il problema è che se si apre un ordine e questo si chiude dopo un paio d'ore e tutte le condizioni di apertura sono ancora intatte, allora si apre un altro ordine, anche se si è già andati lontano dalla barra del segnale.

Darò un'occhiata al tuo link, grazie.

 
sss2019:

Sì, so come aprire un ordine, ma il problema è che se si apre un ordine e questo si chiude dopo un paio d'ore e tutte le condizioni di apertura sono ancora intatte, un altro ordine viene aperto anche se si è già andati lontano dalla barra del segnale.

Guarderò il tuo link, grazie.


Abbiamo impostato un flag per consentire l'apertura degli ordini. Arriva un segnale e la bandiera permette. Apriamo la posizione e rimuoviamo immediatamente la bandiera. La posa viene chiusa dopo qualche tempo. L'Expert Advisor vede che c'è un segnale, ma la bandiera viene rimossa (è vietato piazzare ordini) - di conseguenza, l'ordine non viene impostato.

Il prossimo. Se non c'è un segnale, impostiamo una bandiera (permettiamo l'apertura di posizioni). Oppure, non appena c'è un nuovo segnale, impostiamo una bandiera. Ma nel secondo caso, l'Expert Advisor dovrebbe essere in grado di distinguere un nuovo segnale da quello vecchio.

 

drknn:



Imposta un flag per permettere l'apertura di ordini. Arriva un segnale e la bandiera permette. Apriamo la posizione e rimuoviamo immediatamente la bandiera. La posa viene chiusa dopo qualche tempo. L'Expert Advisor vede che c'è un segnale ma la bandiera è stata rimossa (è vietato impostare ordini), di conseguenza l'ordine non viene impostato.

Il prossimo. Se non c'è un segnale, impostiamo la bandiera (permettiamo l'apertura di posizioni). Oppure, non appena c'è un nuovo segnale, impostiamo la bandiera. Ma nel secondo caso, l'Expert Advisor dovrebbe essere in grado di distinguere un nuovo segnale da quello vecchio.


Grazie mille, penso che questo modo sia più universale.

A proposito, come possiamo annunciare nel nostro EA che l'ordine è stato aperto? Forse questo può essere implementato usando OrderSelect?

 

Beh, per favore date un'occhiata a qualcosa che ho incasinato lì e ora l'ordine non si apre.

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int init()
  {

  }



int deinit()
  {

  }



int start()
  {
  double MyPoint = Point;
   if(Digits == 3 || Digits == 5)
      {
      MyPoint = Point * 10;
      }
      
double MaFast = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);

   for(int SelectedOrder = 0; SelectedOrder < OrdersTotal(); SelectedOrder++)
      {
         bool Flag = false;
         if(OrderSelect(SelectedOrder,SELECT_BY_POS,MODE_TRADES)==True)
            {
            Flag = false;
            }
      }
   return(Flag);
   
   if(OrdersTotal() == 0 && MaFast > MaSlow && Flag == false)
      {
      OrderSend(Symbol(),0,0.1,Ask,30,Ask-StopLoss*MyPoint,Ask+TakeProfit*MyPoint,"CommentA",0,0,Green);
      }
   
   return(0);
  }
Motivazione: