Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 292

 

Ragazzi, per favore consigliate un buon DC per il trading EA?

 
Che tipo di Expert Advisor vorresti utilizzare su un conto reale?
 
Profitov:
Che tipo di Expert Advisor posso chiedere? Cosa mi dice il "Martin" del prossimo che vorrebbe usare su un conto reale?

Non so che tipo di "Martin"))) No, non ancora per il conto reale, non per la demo, ma voglio usare il conto demo della stessa società di brokeraggio che potrebbe essere usato più tardi per il conto reale.

 
SpikeOne:

Ragazzi, qualcuno può per favore descrivere cosa sta succedendo e mostrare il posto dove gli ordini si chiudono nel +, e si apre una nuova serie.

Andrei, senza offesa, ma questa assurdità appartiene agli Annali!
 

Saluti a tutti! Sto chiedendo aiuto per risolvere un problema interessante. Ho un EA, la cui caratteristica è che dopo aver ottenuto un profitto i prossimi trade da 1 a 4 vengono chiusi in stop loss, poi di nuovo in profitto. L'Expert Advisor apre i trade in base al segnale dell'indicatore. Per escludere i trade redditizi che seguono dopo il profitto, si dovrebbero saltare i segnali generati dall'indicatore, cioè non chiudere le operazioni (1,2,3,4) dopo aver ottenuto un profitto. La funzione Sig è disponibile per questo scopo. Tuttavia, penso di aver scritto male questa funzione perché l'EA non apre ordini con essa e tutto funziona molto bene senza di essa. Per favore, consigliate le persone intelligenti dove ho fatto un errore.

Sì, signal è il numero di segnali dopo il profitto e pynkt è la dimensione del profitto in pip.

Sarei grato per l'aiuto.

 
void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
Aiutami, l'EA non si compila
//ПАРАМЕТРЫ ОТКРЫТИЯ ДЛИННОЙ ПОЗИЦИИ

if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)>100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)>-100 
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{ 
Opn_B=true;
//Cls_S=true;
}
}
 //ПАРАМЕТРЫ ОТКРЫТИЯ короткой ПОЗИЦИИ    
if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_S=true; 
//Cls_B=true;   
}  
}


if(Tip==0){
           if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(SL<Bid-Point*TrailingStop)
                    {
                     OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailingStop,TP,0,Green);
                     //return(0);
                    }
                 }
              }
}

if(Tip==1){
           if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if(SL>Ask+Point*TrailingStop)
                    {
                     OrderModify(Ticket,OrderOpenPrice(),Ask+Point*TrailingStop,TP,0,Red);
                    // return(0);
                    }
                 }
              }
}


   // Закрытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
//длинной
//if (iRSI(NULL,0,14,PRICE_CLOSE,0)<30&&iRSI(NULL,0,14,PRICE_CLOSE,1)>30){
 if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {  
      if (Tip==0)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              // Выход из цикла закр
           }
                           
            
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
        }

// короткой       
if (Close[NULL]){
      if (Tip==1)                // Открыт ордер Sell..
        {                                       // и есть критерий закр
         Alert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Ask,2);      // Закрытие Sell
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
                  
           
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
        }
      break;                                    // Выход из while
     }

 
niformalka:
aiutatemi, l'EA non si compila.

... e secondo quali regole linguistiche l'hai scolpito?! Per esempio:

if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)>100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)>-100 
{

:)

 
niformalka:
aiutami, l'EA non compila

Fate doppio clic sul cerchio rosso che segnala un errore di compilazione e vedrete lo stesso cerchio a sinistra sulla linea dove cercare l'errore! Non puoi vedere il tuo cerchio da qui!

E cancella il tuo post come io ho cancellato il mio con il tuo foglio!

 
SpikeOne:

hai l'anno 2014
Mi piacerebbe avere una risposta esauriente! Fare di questo marchio un top seller.
 
niformalka:

Ragazzi, aiutatemi a trovare un bug, l'EA non si compila, mi sono già scervellato, presumibilmente un errore nelle linee di apertura e chiusura delle posizioni long/short


//APRIRE IL PARAMETRO DELLA POSIZIONE LUNGA

if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)>100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)>-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_B=true;
//Cls_S=true;
}
}
//PARAMETRI DI APERTURA POSIZIONE BREVI
if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_S=true;
//Cls_B=true;
}
}


se(Tip==0){
se(TrailingStop>0)
{
se(Bid-OrderOpenPrice()>Point*TrailingStop)
{
se(SL<Bid-Point*TrailingStop)
{
OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailingStop,TP,0,Green);
//return(0);
}
}
}
}

se(Tip==1){
se(TrailingStop>0)
{
se((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
se(SL>Ask+Point*TrailingStop)
{
OrderModify(Ticket,OrderOpenPrice(),Ask+Point*TrailingStop,TP,0,Red);
// { return(0);
}
}
}
}


// Chiudere gli ordini
while(true) // Chiudere il ciclo degli ordini
{
/lungo
//if(iRSI(NULL,0,14,PRICE_CLOSE,0)<30&iRSI(NULL,0,14,PRICE_CLOSE,1)>30){
if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {
if (Tip==0) //Aprire l'ordine di acquisto
{ //e c'è un criterio stretto
Alert("Trying to close Buy ",Ticket,". in attesa di risposta...);
RefreshRates(); // Aggiorna i dati
Ans=OrderClose(Ticket,Lot,Bid,2); // Chiudi Acquisto
if (Ans==true) // Ha funzionato :)
{
Avviso ("Ordine di acquisto chiuso",Biglietto;)
break; // Esci dal ciclo di chiusura
}


if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}
}

// breve
se (Close[NULL]){
if (Tip==1) //Aprire un ordine di vendita.
{ // c'è un criterio di chiusura
Avviso("Tentativo di chiusura della vendita ",Biglietto,";)
RefreshRates(); // Aggiorna i dati
Ans=OrderClose(Ticket,Lot,Ask,2); // Closing Sell
if (Ans==true) // Ha funzionato :)
{
Avviso ("Ordine di vendita chiuso",Biglietto;)
break; // Esci dal ciclo di chiusura
}


if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}
}
break; // Esci mentre
}



L'unica cosa che il compilatore non può fare è dichiarare le variabili.