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

 
alvlaf:

Placez-vous manuellement l'EA sur les graphiques et voulez-vous qu'il ouvre des ordres MaxOpenOrders ou des ordres TOTAL MaxOpenOrders sur CHAQUE graphique ? Et quels ordres : seulement ceux du marché ou tous, y compris les ordres de limite et d'arrêt ?

 
A13ksandr:

Placez-vous manuellement l'EA sur les graphiques et voulez-vous qu'il ouvre des ordres MaxOpenOrders ou des ordres TOTAL MaxOpenOrders sur CHAQUE graphique ? Et quels ordres : seulement ceux du marché ou tous, y compris les ordres de limite et d'arrêt ?

Nous en avons besoin pour ouvrir des ordres pour tous les instruments. Supposons que la valeur de MaxOpenOrders soit de 1, il ne devrait ouvrir qu'un seul ordre au marché. Il s'agit d'un robot pour les options binaires, il n'y a pas d'ordres en attente. Cependant, il fonctionne en série, si la position est fermée avec une perte, alors la même position est ouverte, mais avec un lot plus grand, et jusqu'à ce que la série se termine avec un trade profitable, aucun trade ne doit être ouvert pour d'autres instruments.
 
A13ksandr:
Quel est le but des mots "dans cette stratégie" ? La magie est nécessaire s'il y a des transactions manuelles sur le compte, ou si un autre EA est en cours d'exécution, afin que ces ordres ne soient pas touchés. Je pense que oui.
Oui, merci,A13ksandr .Je change aussi le magicien pendant le débogage pour ne pas attendre la fin de la série perdante. Et la simple suppression du magicien ne changerait pas l'algorithme du robot de trading. Je n'ai pas l'intention d'y ouvrir des ordres manuellement.
 
alvlaf:
Il doit s'ouvrir à tous les symboles. Supposons que MaxOpenOrders soit égal à 1, il ne devrait ouvrir qu'un seul ordre au marché. Il s'agit d'un robot pour les options binaires, il n'y a pas d'ordres en attente. Cependant, il fonctionne en série, si la position est fermée avec une perte, alors la même position est ouverte, mais avec un lot plus grand, et jusqu'à ce que la série se termine avec un trade profitable, aucun trade ne doit être ouvert pour d'autres instruments.

OK, j'ai raté la partie sur les options binaires. Pour une raison quelconque, il me semble que si j'enchaîne manuellement le même EA sur différents graphiques, il sera toujours considéré que différents EA sont en cours d'exécution. Et pour CHAQUE graphique, une option sera exécutée (enfin, quand elle fonctionne correctement). Je peux me tromper car je suis moi-même un débutant. J'ai considéré la multidevise dans mon EA de cette manière :

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD" ; // symboles pour le trading

string Symbols[50] ; // 50 est le nombre maximum de symboles.

int SymbolCount ;

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

int OnInit()

{

si (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1 ;

Symboles[0] = Symbole() ;

}

return(INIT_SUCCEEDED) ;

}

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

bool ExtractSymbols()

{

ushort Virgule = StringGetCharacter(",", 0) ;

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols) ;

for (int i = 0 ; i < SymbolCount ; i++)

{

StringToUpper(Symboles[i]) ;

Symboles[i] = StringTrimRight(Symboles[i]) ; // protection contre les espaces accidentels

Symboles[i] = StringTrimLeft(Symboles[i]) ;

}

si (SymbolCount > 0) return(true) ;

retour (faux) ;

}

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

void OnTick()

{

for (int i = 0 ; i < SymbolCount ; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK) ;

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID) ;

// et ainsi de suite...

}

}

Pour appliquer l'EA à n'importe quel graphique. De cette façon, MaxOpenOrders sera exactement pour tous les graphiques.

 
// et ainsi de suite... - Je veux dire, est-ce que ça va jusqu'à l'ancien code de l'EA lui-même ?
 
A13ksandr:

OK, j'ai raté la partie sur les options binaires. Pour une raison quelconque, il me semble que si j'épingle manuellement le même EA sur différents graphiques, il sera toujours considéré comme exécutant différents EA. Et pour CHAQUE graphique, une option sera exécutée (enfin, quand elle fonctionne correctement). Je peux me tromper car je suis moi-même un débutant. J'ai considéré la multidevise dans mon EA de cette manière :

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD" ; // symboles pour le trading

string Symbols[50] ; // 50 est le nombre maximum de symboles.

int SymbolCount ;

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

int OnInit()

{

si (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1 ;

Symboles[0] = Symbole() ;

}

return(INIT_SUCCEEDED) ;

}

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

bool ExtractSymbols()

{

ushort Virgule = StringGetCharacter(",", 0) ;

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols) ;

for (int i = 0 ; i < SymbolCount ; i++)

{

StringToUpper(Symboles[i]) ;

Symboles[i] = StringTrimRight(Symboles[i]) ; // protection contre les espaces accidentels

Symboles[i] = StringTrimLeft(Symboles[i]) ;

}

si (SymbolCount > 0) return(true) ;

retour (faux) ;

}

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

void OnTick()

{

for (int i = 0 ; i < SymbolCount ; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK) ;

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID) ;

// et ainsi de suite...

}

}

Pour appliquer l'EA à n'importe quel graphique. De cette façon, MaxOpenOrders sera précis pour tous les graphiques.

Ce code est-il écrit en MQL5 ?
 
A13ksandr:
if (DayOfWeek() == 1) Price = iOpen(Symbol(), PERIOD_D1, 4) ;
if (DayOfWeek() >= 2) Price = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2) ;

Et si la semaine suivante est passée, et que j'ai toujours besoin de garder un rapport à partir du prix d'ouverture de la barre du mardi de la semaine dernière ? J'ai besoin d'un EA pour déterminer le prix d'ouverture de la barre du mardi et partir de celui-ci aussi longtemps que nécessaire, par exemple - une semaine, deux, un mois, etc.

Merci.

 
yaaarik777:

Que se passe-t-il si la semaine prochaine a commencé et que j'ai toujours besoin d'établir un rapport à partir du cours d'ouverture du mardi de la semaine dernière ? Autrement dit, j'ai besoin que le conseiller expert détermine le cours d'ouverture du mardi et l'utilise aussi longtemps que nécessaire, c'est-à-dire une semaine, deux semaines, un mois, etc.

Merci.

Ensuite, vous définissez une date spécifique et le programme prend le prix d'ouverture du jour pour cette date, c'est encore plus facile.

 
evillive:

Ensuite, vous définissez une date spécifique et le logiciel prend le prix d'ouverture du jour pour cette date, c'est encore plus facile.

Pouvez-vous m'aider avec le code, je ne le comprends pas.

Pensez-vous que le calcul du prix d'ouverture de la première barre du mardi peut être implémenté dans OnInit() et qu'il calculera le prix au démarrage et s'en souviendra jusqu'au redémarrage de l'EA ?

je suis désolé si j'écris des bêtises, je suis en train d'apprendre)

 
yaaarik777:

Pouvez-vous m'aider avec le code, je ne le comprends pas.

Pensez-vous que le prix de la première barre du mardi devrait être calculé dans OnInit() et qu'il calculera le prix au démarrage et s'en souviendra jusqu'au redémarrage de l'EA ?

Je suis désolé si j'écris cela, je suis juste en train d'apprendre)

Le prix d'ouverture de la première barre du jour = le prix d'ouverture de la barre du jour. Vous pouvez le faire dans Inite, si vous n'avez pas besoin de recalculer la valeur par la suite.

Le code est approximativement le suivant :

input datetime dayz=D'2016.09.06 00:00'; //зададим прошлый вторник, начало суток

int bar_dayz=0;
double price_dayz=0;

int OnInit()
{
////...
bar_dayz=iBarshift(_Symbol,PERIOD_D1,dayz); 
price_dayz=iOpen(_Symbol,PERIOD_D1,bar_dayz);
///...
}
Raison: