[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 232

 

Dmido писал(а) >>

Bonne journée)


Je reviens vers vous avec une question. Je l'ai évitée pendant longtemps en raison de mon manque de compréhension des ordres en attente dans les EA, mais j'ai finalement été bloqué. Je ne comprends pas comment fixer le prix dans un ordre en attente. Que dois-je ajouter à la place de BID et ASK ? Puis-je utiliser une variable calculée avant cela ? Ensuite, comment dois-je fixer ce prix pour qu'il passe plus tard, lors de la passation d'un ordre ? Je reçois beaucoup d'erreurs disant qu'un tel prix n'existe pas, etc. .....


Si vous le voulez bien, vous pouvez expliquer votre réponse en code... J'ai tellement cherché, mais c'est dit de travers...((((

Dans la qualité des valeurs Ask et Bid sur l'idée doit agir les valeurs actuelles de Ask et Bid, ou des variables calculées plus tôt.

Il y a une particularité : vous pouvez considérer ces valeurs comme réelles uniquement pour les ordres d'achat et de vente.


Le mieux est de faire l'ouverture de tous les ordres sous la forme d'au moins 6 procédures, c'est à dire OrderSendBuy, OrderSendSell, OrderSendLimitBuy, OrderSendLimitSell, OrderSendStopBuy et OrderSendStopSell.


PS

Il convient de noter que les ordres à cours limité sont ouverts au meilleur prix (avec un retrait par rapport au prix actuel d'un certain nombre de points), et que les ordres stop sont placés dans la direction opposée, au-dessus ou au-dessous du prix actuel.


Exemple d'un code d'ouverture du marché :

//Procedure OrderSendBuy
void OrderSendBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

if( SizeTP>0){ TP = RealAsk+ SizeTP* SymbolPoint;}else{ TP = RealAsk+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid- SizeSL* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUY, LotsSize, RealAsk, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка открыть Market-Buy позицию по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создана позиция Market-Buy по паре ", WorkSymbol," Тикер новой позиции #", TicketNow);
Alert("Open market-Buy, ticket ", TicketNew," Open price ", RealAsk," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}


 

Exemple de code pour définir un ordre en attente:

//Procedure OrderSendLimitBuy
void OrderSendLimitBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int LimitStep=50,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double OpenPrice; //Цена на которую будет установлен отложник

double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

OpenPrice = RealAsk- LimitStep* SymbolPoint; //Цена на которую будет установлен отложник

if( SizeTP>0){ TP = OpenPrice+ SizeTP* SymbolPoint;}else{ TP = OpenPrice+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid-( SizeSL+ LimitStep)* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUYLIMIT, LotsSize, OpenPrice, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка создать Limit-Buy по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создан ордер Limit-Buy по паре ", WorkSymbol," Тикер ордера #", TicketNow);
Alert("Create Limit-Buy, ticket ", TicketNew," Open price ", OpenPrice," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}
 

Bonjour.

Je teste un EA.

Période Jour (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
Modèle Tous les ticks (la méthode la plus précise basée sur toutes les plus petites échéances disponibles)
Les bars dans l'histoire 1259 Tiques modélisées 8769661 Qualité de la modélisation s/o
Erreurs de concordance des graphiques 225

Je reçois des erreurs de correspondance. Y a-t-il un moyen de les éviter ? Je ne comprends pas s'il s'agit d'un grand ou d'un petit nombre d'erreurs. La balance est principalement verte et vert foncé, mais elle n'est remplie qu'à environ 20 %. Et la qualité de la simulation est nulle - est-ce un problème ?

Peut-être que je ne devrais même pas faire attention, je ne comprends pas...

Merci d'avance.

 
RedFish >> :

Bonjour.

Je teste un EA.

Période Jour (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
Modèle Tous les ticks (la méthode la plus précise basée sur toutes les plus petites échéances disponibles)
Les bars dans l'histoire 1259 Tiques modélisées 8769661 Qualité de la modélisation s/o
Erreurs de concordance des graphiques 225

Je reçois des erreurs de correspondance. Y a-t-il un moyen de les éviter ? Je ne comprends pas s'il s'agit d'un grand ou d'un petit nombre d'erreurs. La balance est principalement verte et vert foncé, mais elle n'est remplie qu'à environ 20 %. Et la qualité de la simulation est nulle - est-ce un problème ?

Peut-être que je ne devrais même pas faire attention, je ne comprends pas...

Merci d'avance.

Je ne sais pas, personnellement je ne m'embête jamais avec ce genre de choses (car je teste presque toujours les stratégies sans visualisation).


Voici ce que j'ai obtenu sur Jew D1 avec une période d'essai similaire

Tentative #1 : barres dans l'historique - 1302 ticks simulés - 4313293 Qualité de la simulation - 50.00%.

Tentative #2 : Barres dans l'historique - 1303 Ticks modélisés - 4323442 Qualité de la modélisation - 50.00%.
Erreurs de correspondance des graphiques - 0.

 
Interesting писал(а) >>

Je ne sais pas, personnellement je ne m'occupe jamais de ce genre de choses (car je teste presque toujours les stratégies sans visualisation).

Voici ce que j'ai obtenu sur Jew D1 avec une période d'essai similaire

Tentative #1 : barres dans l'historique - 1302 ticks simulés - 4313293 Qualité de la simulation - 50.00%.

Essai n°2 : Historique : 1303 barres - 1303 ticks simulés - 4323442 Qualité de modélisation - 50.00%.
Erreur d'inadéquation des cartes - 0.

Merci.

Je pense maintenant que MT remplit automatiquement les 512 dernières barres et remplit le reste ..... Je ne sais pas comment le dire exactement. Mon conseiller expert est un conseiller de tendance et la distance est importante pour moi. 512 barres, ce n'est pas trop.

Quant aux autres symboles, ils peuvent être téléchargés à partir d'un site distinct et téléchargés ultérieurement ?

Je vous remercie.

 

Bonjour, chers amis.

J'ai été stupide ces derniers temps, peut-être que c'est le temps.

Pouvez-vous me dire comment déclarer un tableau unidimensionnel (dans un indicateur), si le nombre d'éléments du tableau est fixé par une variable externe.

Merci.

 
RedFish >> :

Bonjour.

Je teste un EA.

PériodeJour (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
ModèleTous les ticks (la méthode la plus précise basée sur toutes les plus petites échéances disponibles)
Les bars dans l'histoire1259Tiques modélisées8769661Qualité de la modélisations/o
Erreurs de concordance des graphiques225

Je reçois des erreurs de correspondance. Y a-t-il un moyen de les éviter ? Je ne comprends pas s'il s'agit d'un grand ou d'un petit nombre d'erreurs. La balance est principalement verte et vert foncé, mais elle n'est remplie qu'à environ 20 %. Et la qualité de la simulation est nulle - est-ce un problème ?

Peut-être que je ne devrais même pas faire attention, je ne comprends pas...

Merci d'avance.

Mon IMHO ci-dessous, mais étant entre guillemets - veuillez me corriger si je me trompe :

Le fait est que la clôture de la 59ème minute, la clôture de la 45ème minute sur la M15, la clôture de la 30ème minute sur la M30 et la clôture sur le H1 peuvent ne PAS coïncider.

Pour coïncider, vous devez tuer votre propre historique, en téléchargeant l'historique du serveur de devis pour une période plus courte

et recalculez toutes les échéances en utilisant l'historique téléchargé.

Dans ce cas, il se peut également que la clôture réelle sur différents horizons temporels ne coïncide pas.

En d'autres termes, vous devez prendre la plus petite unité de temps et lire les valeurs de la plus grande unité de temps avec votre main.

 
alderru >> :

Bonjour, chers amis.

J'ai été stupide ces derniers temps, peut-être que c'est le temps.

Pourriez-vous me dire comment déclarer un tableau unidimensionnel (dans un indicateur), si le nombre d'éléments du tableau est fixé par une variable externe.

Merci.

int y[] ;

extern int blah-blah = 100 ;

init() {

ArrayResize(y, blah-blah) ;

}

 
jartmailru писал(а) >>

Mon IMHO ci-dessous, mais étant des citations, veuillez me corriger si je me trompe :

Le fait est que le Close 59th minute, le Close 45th sur M15, le Close 30th sur M30 et le Close sur H1 peuvent NE PAS correspondre.

Pour coïncider, vous devez tuer votre propre historique, en téléchargeant l'historique du serveur de citations pour une période plus courte

et recalculez toutes les échéances en utilisant l'historique téléchargé.

Dans ce cas, il se peut également que la clôture réelle sur différents horizons temporels ne coïncide pas.

En d'autres termes, vous devez prendre la plus petite unité de temps et lire les valeurs de la plus grande unité de temps.

О ! Mains ! !!

Merci pour la réponse. Mais à en juger par la première partie, je comprends que les erreurs ne sont pas critiques pour moi. Merci beaucoup d'avoir expliqué le mécanisme de ces erreurs.

 
Messieurs le problème dans le code peut aider !
for ( shift = CountBars; shift>=0; shift--) 
{ 
         cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift-1);
         cci2 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift);  

         if ( cci1>100) // (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
         {
         val1[ shift]=Low[ shift]-5*Point;
         if ( flagval2==0) { Alert("не забудь отправить письмо о БАЙ"); flagval2=1; flagval1=0;}
         }
         if ( cci1<-100) //(b4plusdi<b4minusdi && nowplusdi>nowminusdi) 
         {
         val2[ shift]=High[ shift]+5*Point;
         if ( flagval1==0) { Alert("не забудь отправить письмо о СЕЛЛ"); flagval2=0; flagval1=1;}
         }
   }
   return(0);
}

tout en haut :

int flagval1=0;
int flagval2=0;

J'ai des difficultés avec ces drapeaux. Quelqu'un peut-il jeter un regard neuf ?

-----------------

et il y a aussi un problème avec le code EA :

//---------------------------------------------------------------- 5.1 
   cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, 1);

   if ( New_Bar==true && cci1>100 && flagval2==1)                // && MA_3_t==0   && wayDOWN==true
     {                                            
         Opn_B=true; New_Bar=false; Cls_S=true;                                  
         flagval1=1;
         flagval2=0;
     }
     
   if ( New_Bar==true && cci1<-100 && flagval1==1)                 // && MA_4_t==0  && wayUP==true
     {                                                   
         Opn_S=true; New_Bar=false; Cls_B=true;
         flagval2=1;
         flagval1=0;
     }
//--------------------------------------------------------------- 6 --

ce n'est pas du commerce ! Peut-être que quelqu'un y jettera un regard neuf.

décidé à stupide dès que le 100 (-100) va au commerce !

J'attache EA !

Dossiers :
stoch_cros.mq4  17 kb