[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 417

 

Si può fare un robot che apra in entrambe le direzioni con piccoli stop con lotti e scelga una posizione vincente? O è una fantasia?

 

OK con il colore...

La domanda è - voglio "nascondere SL" da DM, cioè non voglio che sia impostato con l'operatore di apertura, ma assegnarlo a una variabile all'interno di expert:

extern double TrailingStop=25.0;

extern double Lots=0.1;

....
doppio StopB;

.....

se( condizione di ingresso) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
the stop < - lo sto facendo bene?

}

.....

if( profit exit conditions || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
chiude la posizione
return(0); // esce
}

E dove scriviamo la condizione di uscita di SL? Insieme alla condizione di chiusura del profitto usando "||" o separatamente?

 

Buon giorno! Vi prego di consigliarmi come utilizzare correttamente la funzione iCustom, voglio creare delle condizioni per i trade in base al colore dell'indicatore, che viene disegnato in una finestra separata dell'istogramma:

colore Oct_1=iCustom(NULL,0, "octava_1");

se ( Oct_1==Verde).... ecc.

Quando si compila il programma dà un errore, dice "'green' - variabile non definita, qual è la ragione?

Sarei molto grato per una risposta)))

 

Domanda rimossa, la lettera maiuscola ha un significato))))

 
DOCTORS:

OK con il colore...

La domanda è - voglio "nascondere SL" alle società di intermediazione, cioè non voglio impostarli con l'operatore di apertura, ma assegnarli a una variabile all'interno di expert:

extern double TrailingStop=25.0;

extern double Lots=0.1;

....
doppio StopB;

.....

se( condizione di ingresso) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
the stop < - lo sto facendo bene?

}

.....

if( profit exit conditions || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
chiude la posizione
return(0); // esce
}

E dove scriviamo la condizione di uscita di SL? Insieme alla condizione di chiusura del profitto usando "||" o separatamente?

Non sono un professionista, ma mi stavo chiedendo la stessa cosa. Personalmente l'ho scritto così (i professionisti mi correggeranno quando verranno)

Questa parte prende un ordine aperto e assegna i valori di stop e take alle variabili

// +----------------------------------------------------------------------+
//------- : функция поиска открытых ордеров по символу графика, подхват и установки уровней стопа и профита
double TradeSymbol()
   {
   int    TotalTradeSymbol = 0;
   int    SendGo           = 0;
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(StopLoss   > 0 && Bid < OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() - StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() + TakeProfit*Point, Digits);}
          }
        if(OrderType()== OP_SELL)
          {
          if(StopLoss   > 0 && Ask > OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() + StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() - TakeProfit*Point, Digits);} 
          }
        if(OrderStopLoss()   != sl){SendGo++;}
        if(OrderTakeProfit() != tp){SendGo++;}
        if(!UseVirtualTradeLevel && SendGo != 0) {OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,CLR_NONE);}
        TotalTradeSymbol++;
        }
      }
    return(TotalTradeSymbol);  
    }
// +----------------------------------------------------------------------+

questa parte controlla e chiude alla presa

// +----------------------------------------------------------------------+
//------- : функция проверки тейкпрофита
void CheckTakeProfit()
   {
   if(tp == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid > tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask < tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+

questa parte controlla e chiude alla fermata

// +----------------------------------------------------------------------+
//------- : функция проверки стоплоса
void CheckStopLoss()
   {
   if(sl == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid < sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask > sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+
P.S.

Professionisti - non prendete in giro gli autodidatti, forse potrebbe essere diverso, ma funziona per me ....

 
elmucon:

Non sono un professionista, ma mi stavo chiedendo la stessa cosa. Personalmente l'ho scritto in questo modo (se sei un professionista - correggimi)

Questa parte prende un ordine aperto e assegna i valori di stop e take alle variabili

questa parte controlla e chiude alla presa

questa parte controlla e chiude alla fermata

P.S.

Professionisti - non prendete in giro gli autodidatti, forse potrebbe essere diverso, ma funziona per me ....

Tutto è praticamente a posto! L'unica cosa è che ci sono un paio di stranezze in entrata/uscita. Bene, e una tale strategia non salva dallo slittamento. Ma grazie mille!
 

Come faccio a determinare il tempo attuale dell'EA?

Se il timeframe è M1, devo soddisfare una condizione, e se il timeframe è M5, devo soddisfare un'altra condizione.

 
sss2019:

Puoi dirmi come determinare l'attuale periodo di tempo per l'EA?

Se il timeframe è M1, devo soddisfare una condizione, e se il timeframe è M5, devo soddisfare un'altra condizione.


Usando la funzione Period()
 
sss2019:

Come faccio a determinare il tempo attuale dell'EA?

Se il timeframe è M1, devo soddisfare una condizione, e se il timeframe è M5, devo soddisfare un'altra condizione.

if (Period()==1) return; //Условие минуток
if (Period()==5) bool working=true; //Условие пятиминуток
 
splxgf:


Grazie. Quindi il periodo M1 corrisponde al valore 1, e il periodo M5 corrisponde al valore 5, quindi risulta che il periodo H1 corrisponde a 60, e il periodo H4 a 240 giusto?

Ho bisogno che questa costruzione funzioni: quando il periodo M1 è selezionato caso 1 e quando il periodo M15 è selezionato caso 15. Funzionerà, o è necessario fare il caso 1 caso 2 caso 3 - in ordine?

  switch(Period())
    {
    case 1 : Ba = 60;
    case 5 : Ba = 12;
    case 15 : Ba = 4;
    case 30 : Ba = 2;
    case 60 : Ba = 1;
    }