[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
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;//магический номер экспертаexterndouble volume = 0.1;//объем выставляемого ордераexternint slippage = 3;//проскальзываниеint OPB;//метка выставляемого ордера на покупкуint OPS;//метка выставляемого ордера на продажуint Profit=1;//уровень профита открытых ордеровstring comB = "Выставили ордер Buy";//комментарий ордераstring comS = "Выставили ордер Sell";//комментарий ордераdouble StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCADdouble StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSDdouble SARCAD;//текущее положение индикатора по USDCADdouble SARСCAD;//положение индикатора бар назад по USDCADdouble SARAUD;//текущее положение индикатора по AUDUSDdouble SARСAUD;//положение индикатора бар назад по AUDUSDint 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);//выход
}
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
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é
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é
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.
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 :
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.
existe-t-il une possibilité d'annulation des commandes historiques ?
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.
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()
}
//--------------------------------------------------------------------
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()
}
//--------------------------------------------------------------------
Qu'est-ce qui arrive le plus souvent - acheter ou vendre ? Signification globale.