Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 292

 

Les gars, s'il vous plaît, conseillez un bon DC pour le trading EA ?

 
Quel type de conseiller expert souhaiteriez-vous utiliser sur un compte réel?
 
Profitov:
Quel type de conseiller expert puis-je demander ? Que me dit le "Martin" à propos du prochain que vous aimeriez utiliser sur un compte réel ?

Je ne sais pas quel genre de "Martin")))) Je ne connais pas le "Martin". Non, pas encore pour le compte réel, pas pour la démo, mais je veux utiliser le compte de démonstration de la même société de courtage qui pourra être utilisé pour le compte réel plus tard.

 
SpikeOne:

Les gars, quelqu'un peut-il décrire ce qui se passe et montrer l'endroit où les ordres se ferment dans le +, et ouvrent une nouvelle série.

Andrei, ne le prends pas mal, mais cette absurdité doit être classée dans les Annales !
 

Salutations à tous ! Je demande de l'aide pour résoudre un problème intéressant. J'ai un EA, dont la caractéristique est qu'après avoir obtenu un profit, les trades suivants de 1 à 4 sont fermés sur stop loss, puis profit à nouveau. Le conseiller expert ouvre des transactions en fonction du signal de l'indicateur. Pour exclure les transactions rentables qui suivent le profit, il faut ignorer les signaux générés par l'indicateur, c'est-à-dire ne pas fermer les transactions (1,2,3,4) après avoir obtenu un profit. La fonction Sig est disponible à cet effet. Cependant, je pense que j'ai mal écrit cette fonction car l'EA n'ouvre pas d'ordres avec elle et tout fonctionne très bien sans elle. S'il vous plaît, dites aux personnes intelligentes où j'ai fait une erreur.

Oui, signal est le nombre de signaux après le profit et pynkt est la taille du profit en pips.

Je vous serais reconnaissant de m'aider.

 
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);
 }
//+------------------------------------------------------------------+
 
Aidez-moi, l'EA ne se compile pas.
//ПАРАМЕТРЫ ОТКРЫТИЯ ДЛИННОЙ ПОЗИЦИИ

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:
aidez-moi, l'EA ne se compile pas.

... et selon quelles règles de langage l'avez-vous sculpté ? ! Par exemple :

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

:)

 
niformalka:
aidez-moi, l'EA ne se compile pas

Double-cliquez sur le cercle rouge signalant une erreur de compilation et vous verrez le même cercle à gauche sur la ligne où il faut chercher l'erreur ! Tu ne peux pas voir ton cercle d'ici !

Et supprimez votre message comme j'ai supprimé le mien avec votre fiche !

 
SpikeOne:

vous avez l'année 2014
J'aimerais bien avoir une réponse complète ! Je vais faire de cette marque un best-seller.
 
niformalka:

Les gars, aidez-moi à trouver un bug, l'EA ne compile pas, je me suis déjà creusé la tête dessus, probablement une erreur dans les lignes d'ouverture et de fermeture de la position longue/courte.


//OUVERTURE DU PARAMÈTRE DE POSITION LONGUE

if(iCCI(Symbole,0,14,PRICE_TYPICAL,0)>100&&iCCI(Symbole,0,14,PRICE_TYPICAL,0)>-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_B=vrai ;
//Cls_S=true ;
}
}
//Short POSITION OPENING PARAMETRES
if(iCCI(Symbole,0,14,PRICE_TYPICAL,0)<100&iCCI(Symbole,0,14,PRICE_TYPICAL,0)<-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_S=vrai ;
//Cls_B=vrai ;
}
}


if(Tip==0){
si(TrailingStop>0)
{
si(Bid-OrderOpenPrice()>Point*TrailingStop)
{
si(SL<Point d'enchère*TrailingStop)
{
OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailingStop,TP,0,Green) ;
//retourner(0) ;
}
}
}
}

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


// Fermer les commandes
while(true) // Fermer la boucle de commande
{
//long
//si(iRSI(NULL,0,14,PRICE_CLOSE,0)<30&iRSI(NULL,0,14,PRICE_CLOSE,1)>30){
if(iCCI(Symbole,0,14,PRICE_TYPICAL,0)<100&iCCI(Symbole,0,14,PRICE_TYPICAL,0)<-100 {
if (Tip==0) //Ouvrir un ordre d'achat
{ //et il y a un critère proche
Alert("Essayer de fermer l'achat ",Ticket,". Attendre la réponse...) ;
RefreshRates() ; // Rafraîchir les données
Ans=OrderClose(Ticket,Lot,Bid,2) ; // Fermer l'achat
if (Ans==true) // Cela a marché :)
{
Alerte ("Ordre d'achat fermé",Ticket ;)
break ; // Sortie de la boucle fermée
}


if (Fun_Error(GetLastError())==1) // Gestion des erreurs
continue ; // réessayer
return ; // Sortie de start()
}
}

// court
if (Close[NULL]){
if (Tip==1) //Ouvrir un ordre de vente.
{ // il existe un critère proche
Alert("Tentative de fermeture de la vente ",Ticket," ;)
RefreshRates() ; // Mise à jour des données
Ans=OrderClose(Ticket,Lot,Ask,2) ; // Vente de clôture
if (Ans==true) // Cela a marché :)
{
Alert ("Sell order closed ",Ticket ;)
break ; // Sortie de la boucle fermée
}


if (Fun_Error(GetLastError())==1) // Gestion des erreurs
continue ; // réessayer
return ; // Sortie de start()
}
}
break ; // Quitter le while
}



La seule chose que le compilateur ne peut pas faire est de déclarer des variables.
Raison: