[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 966

 
TarasBY:

Quelqu'un peut-il me dire quel est le problème ?


Tant que nous n'aurons pas l'indicateur lui-même, personne ne pourra nous le dire.
 
Vinin:


C'est possible. Si bien sûr la société de courtage le supporte.

Gardez à l'esprit que dans le testeur, vous ne pouvez ouvrir des positions que sur l'instrument en cours, et qu'il existe certaines restrictions pour les autres instruments.


Cette série de restrictions s'applique-t-elle au commerce en ligne ? Si non, c'est triste. Le code n'ouvre rien :

int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Выставили ордер Buy";//комментарий ордера
string comS = "Выставили ордер Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD

double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD


int start()
  {
  
//______________________________определение значений переменных_______________________ 


      StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); 
      StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
      
      SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
      SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
      SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
      SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
      
      double bidCAD=MarketInfo("USDCAD",MODE_BID);
      double askCAD=MarketInfo("USDCAD",MODE_ASK);
      double bidAUD=MarketInfo("AUDUSD",MODE_BID);
      double askAUD=MarketInfo("AUDUSD",MODE_ASK);


........................


//______________выставление ордеров______________________________________________________________________
    
  
    if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
     
     {  //_______Buy_______ 

          if(!IsTradeAllowed())
               {
                  Alert("занят торговый поток, повторим попытку бай...");
                  return(-1);
               }
          OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
            
            if(OPB == -1)
              {
                 Alert("GBPUSD"," ошибка: бай", GetLastError());
                 return(-1);
              }
         
            if(OPB > 1)
            Alert ("GBPUSD","Выставили ордер на покупку!");

     }
      else
     {//_______Sell_______
  
         if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
     
         {
          
           if(!IsTradeAllowed())
                {
                   Alert("занят торговый поток, повторим попытку селл...");
                   return(-1);
                }
        
           OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер


             if(OPS == -1)
               {
                  Alert("GBPUSD"," ошибка: селл", GetLastError());
                  return(-1);
               }
         
             if(OPS > 1)
             Alert ("GBPUSD","Выставили ордер на продажу!");

         }
     }    
   return(0);//выход
  }
 
mInvIn:

Bonjour à tous.

Pouvez-vous me dire s'il vous plaît : après avoir effectué des tests sur l'historique, y a-t-il un moyen d'obtenir le commentaire ou le numéro magique de chaque transaction effectuée, ou tout autre moyen d'identifier les transactions ? Laissez-moi essayer d'en expliquer le sens. Supposons que je programme quelques modèles et que j'exécute l'EA sur l'historique, le résultat, comme c'est souvent le cas, est une perte. Il serait intéressant de voir, parmi les modèles et dans quelles conditions de marché, lequel perd de plus en plus souvent et lequel (s'il y en a un) affiche au moins quelques bénéfices.

Merci d'avance pour les réponses.

Faites simple. Définissez le numéro de motif comme un paramètre externe. Le conseiller expert doit ouvrir des positions uniquement selon ce modèle. Et si vous spécifiez zéro, par exemple, il s'ouvre par n'importe quel motif. Vous exécutez l'optimisation par tous les modèles. Vous obtenez le tableau récapitulatif et la ventilation des modèles.
 
Une fonction "Ordre nouveau" comme "Barreau nouveau" est nécessaire. La fonction ne doit avoir la valeur TRUE que pour un tick après le moment où l'ordre a été ouvert. C'est-à-dire au moment où le nombre d'ordres ouverts change à la hausse. Aidez-moi, s'il vous plaît
 
Techno:
existe-t-il une possibilité d'annulation des commandes historiques ?
Non, seulement les ordres de marché et les ordres en attente.
 
IgorM:


il y a un tel problème - j'ai eu ce problème aussi, si le Conseiller Expert fait beaucoup de transactions par an - peut-être trop de données sont stockées pour la sortie du résultat final ou peut-être les tampons de l'indicateur mangent la mémoire

j'ai vu - je ne sais pas, soyez indulgent avec moi - pour une image générale, le test est pour 10 ans, et il vaut mieux optimiser pour une année et ensuite faire une sélection des meilleurs paramètres.

Merci Igor ! Intuitivement, c'est ce que je fais. J'ai pensé qu'il serait possible de ne pas perdre de vitesse sur une période plus longue ?
 

Gourous, conseillez moi, je me suis déjà creusé la tête, je pense que ça devrait être facile, j'ai essayé les deux façons... Ça ne marche pas...

L'essence du problème :

Je suis en train d'écrire un indicateur, il attrape des points dans les tampons, au total il devrait y en avoir 4, 2 assemblés normalement, les valeurs comme elles devraient être par barres, soit zéro ou, prix, ici tout est OK, mais nous avons besoin de 2 tampons supplémentaires dans lesquels mettre les valeurs de cette façon : si une valeur non nulle est trouvée pour le tampon 0, puis vérifier si la valeur précédente non nulle dans le tampon 0, et si elle est inférieure, alors la valeur actuelle est écrite dans le tampon 2. Je veux qu'il soit calculé à la volée, pas en cherchant et en bouclant, c'est mon premier indicateur, j'ai écrit des Expert Advisors et des scripts, mais je me suis perdu avec l'indicateur et ses buffers...

...................

Counted_bars=IndicatorCounted() ; // Nombre de barres calculées

i=Bars-Counted_bars-1 ; // Index du premier non compté

while(i>1) // Boucle sur les barres non comptées

{

if (..............) // tout fonctionne ici

{

Buf_0[i]=High[i] ;

{ ici nous voulons calculer Buf_2[i] }

}

if (..............) //tout fonctionne ici aussi

{

Buf_1[i]=Low[i] ;

{mais ici nous voulons calculer Buf_3[i] }

}

i-- ;

//calculer l'indice de la prochaine barre

}

//--------------------------------------------------------------------

return ; // Sortie de la fonction spéciale start()

}

//--------------------------------------------------------------------

 
Qu'est-ce qui arrive le plus souvent - acheter ou vendre ? Signification globale.
 
ChachaGames:

Gourous, conseillez moi, je me suis déjà creusé la tête, je pense que ça devrait être facile, j'ai essayé les deux façons... Je ne peux pas...

L'essence du problème :

Je suis en train d'écrire un indicateur, il attrape des points dans les tampons, au total il devrait y en avoir 4, 2 assemblés normalement, les valeurs comme elles devraient être par barres, soit zéro ou, prix, ici tout est OK, mais nous avons besoin de 2 tampons supplémentaires dans lesquels mettre les valeurs de cette façon : si une valeur non nulle est trouvée pour le tampon 0, puis vérifier si la valeur précédente non nulle dans le tampon 0, et si elle est inférieure, alors la valeur actuelle est écrite dans le tampon 2. Je veux qu'il soit calculé à la volée, pas en cherchant et en bouclant, c'est mon premier indicateur, j'ai écrit des Expert Advisors et des scripts, mais je me suis perdu avec l'indicateur et ses buffers...

...................

Counted_bars=IndicatorCounted() ; // Nombre de barres calculées

i=Bars-Counted_bars-1 ; // Index du premier non compté

while(i>1) // Boucle sur les barres non comptées

{

if (..............) // tout fonctionne ici

{

Buf_0[i]=High[i] ;

{ ici nous voulons calculer Buf_2[i] }

}

if (..............) //tout fonctionne ici aussi

{

Buf_1[i]=Low[i] ;

{mais ici nous voulons calculer Buf_3[i] }

}

i-- ;

//calculer l'indice de la prochaine barre

}

//--------------------------------------------------------------------

return ; // Sortie de la fonction spéciale start()

}

//--------------------------------------------------------------------

En gros, comment puis-je trouver l'indice de la valeur non nulle précédente dans le tampon ?
 
_SS_:
Qu'est-ce qui arrive le plus souvent - acheter ou vendre ? Signification globale.
Exactement la moitié pour chaque vente il y a un acheteur différent :)
Raison: