que dois-je faire maintenant ? j'ai une stratégie basée sur les canaux - existe-t-il une alternative de remplacement ?
Bien sûr qu'il y en a. Calculez les valeurs, enregistrez-les dans un tableau ou une structure, et utilisez-les pour votre EA. Et vous pouvez également dessiner les objets à partir de là - les valeurs sont disponibles.
Je veux mettre en œuvre ce qui suit la possibilité d'ajouter différentes échéances à UNE feuille (dans différentes fenêtres mais sur une seule feuille) Veuillez me conseiller sur les endroits où aller et où creuser). Est-ce possible via mql ou WInApi ? peut-être y a-t-il des exemples de l'article que je n'ai pas pu trouver(
S'il vous plaît, aidez-moi à réparer cela ! Cela donne l'erreur 'Void' - déclaration sans type 36 4 et où réarranger ou écrire return ? //-------------------------------------------------------------------- Void OnTick() {
void s'écrit avec une petite minuscule au lieu d'une majuscule. Regarde, c'est une couleur différente. Mettez le curseur sur ce mot et appuyez sur F1 - cela aide souvent.
Tant de messages d'erreur apparaissent après l'avoir réparé... J'ai réparé les messages d'erreur, mais vérifiez la logique vous-même.
#property strictbool Результат;
externint SL = 200, //Стоплосс в пунктах
TStop = 20, //
TStep = 10, //
TP = 85; //Тейкпрофит в пунктах//extern double Lot = 0.10; //используется только при risk = 0externdouble Lots = 0; // лот, если 0, то динамическийexterndouble RiskPercentage = 50; // % от депо на лот, если динамическийexternint MaxOrders = 6; //Максимальное кол-во ордеров одного направления//--------------------------------------------------------------------int STOPLEVEL,Magic=123321,tip;
datetime TimeBar;
string txt;
//--------------------------------------------------------------------int init()
{
if(Digits==3||Digits==5)
{
TStop *=10;
TStep *=10;
SL *=10;
}
return(INIT_SUCCEEDED);
}
//--------------------------------------------------------------------voidOnTick()
{
double Lot = Lots;
int Ticket = 0;
if (Lots==0)
{
double margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
double minLot = MarketInfo(Symbol(), MODE_MINLOT);
double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
double step = MarketInfo(Symbol(), MODE_LOTSTEP);
double account = AccountFreeMargin();
double percentage = account*RiskPercentage/100;
Lot = MathRound(percentage/margin/step)*step;
if(Lot < minLot) Lot = minLot;
if(Lot > maxLot)Lot = maxLot;
}
int buy=0,sell=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
tip=OrderType();
if (tip==0) buy++;
if (tip==1) sell++;
}
}
Comment(txt,"\nБаланс ",DoubleToStr(AccountBalance(),2),"\nЭквити ",DoubleToStr(AccountEquity(),2),"\nBuy ",buy,"\nSel ",sell);
double TrPr=0,StLo=0;
double L = NormalizeDouble(Low[0], Digits);
double L1 = NormalizeDouble(Low[1], Digits);
double L2 = NormalizeDouble(Low[2], Digits);
double L3 = NormalizeDouble(Low[3], Digits);
double H = NormalizeDouble(High[0],Digits);
double H1 = NormalizeDouble(High[1],Digits);
double H2 = NormalizeDouble(High[2],Digits);
double H3 = NormalizeDouble(High[3],Digits);
double O = NormalizeDouble(Open[0], Digits);
double O1 = NormalizeDouble(Open[1], Digits);
double O2 = NormalizeDouble(Open[2], Digits);
double O3 = NormalizeDouble(Open[3], Digits);
double C = NormalizeDouble(Close[0],Digits);
double C1 = NormalizeDouble(Close[1],Digits);
double C2 = NormalizeDouble(Close[2],Digits);
double C3 = NormalizeDouble(Close[3],Digits);
//LONGif (buy<MaxOrders && TimeBar!=Time[0]&& H>H1&&H1>H2&&H2>H3)
{
if (TP!=0) TrPr = NormalizeDouble(Ask + TP * Point,Digits);
if (SL!=0) StLo = NormalizeDouble(Bid - SL * Point,Digits);
Ticket=OrderSend(Symbol(),OP_BUY, Lots,NormalizeDouble(Ask,Digits),3,0,0,"BreakdownLevelCandleMA",Magic,0,Blue);
if (Ticket==0)
Print("Error BUY",GetLastError(),"",Symbol()," Lot ",Lot," SL ",StLo," TP ",TrPr);
else
{
Результат=OrderModify(Ticket,OrderOpenPrice(),StLo,TrPr,0,Blue);
TimeBar=Time[0];
}
}
//SHORTif (sell<MaxOrders && TimeBar!=Time[0]&& L>L1&&L1>L2&&L2>L3)
{
if (TP!=0) TrPr = NormalizeDouble(Bid - TP * Point,Digits);
if (SL!=0) StLo = NormalizeDouble(Ask + SL * Point,Digits);
Ticket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3,0,0,"BreakdownLevelCandleMA",Magic,0,Red);
if (Ticket==0)
Print("Error SELL",GetLastError(),"",Symbol()," Lot ",Lot," SL ",StLo," TP ",TrPr);
else
{
Результат=OrderModify(Ticket,OrderOpenPrice(),StLo,TrPr,0,Red);
TimeBar=Time[0];
}
}
Trailing();
}
//!!! куда передвинуть? return(0);void Trailing()
{
for(int i=OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if (Bid-OrderOpenPrice()> TStop*Point || OrderStopLoss() ==0)
{
if(OrderStopLoss()<Bid-(TStep+TStop)*Point || OrderStopLoss() ==0)
{
if(!OrderModify(OrderTicket(), OrderOpenPrice(),NormalizeDouble(Bid-TStop*Point, Digits),0,0))
Print("Ошибка модификации ордера на покупку");
}
}
}
if(OrderType()==OP_SELL)
{
if (OrderOpenPrice()-Ask>TStop*Point || OrderStopLoss() ==0)
{
if((OrderStopLoss()> (Ask+(TStep+TStop)*Point)) || (OrderStopLoss()==0) )
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TStop*Point,Digits),0,0))
{
Print("Ошибка модификации ордера на продажу");
}
}
}
}
}
}
}
}
void s'écrit avec une petite minuscule et non avec une grande majuscule. Regarde si c'est une couleur différente. Mettez le curseur sur ce mot et appuyez sur F1 - cela aide souvent.
Après l'avoir réparé, de nombreux messages d'erreur apparaissent... J'ai réparé les messages d'erreur, mais vérifiez la logique vous-même.
Bonjour, messieurs les commerçants ! J'ai écrit un robot de signalisation basé sur le code que j'ai posté ci-dessus. Le robot génère des signaux pour les options de manière presque exacte, mais avec un décalage de deux barres. Que dois-je changer dans le code pour produire les mêmes résultats mais deux barres plus tôt ? Ou est-ce impossible ? Merci.
Pouvez-vous me conseiller - j'ai un indicateur personnalisé - Channel - je dois retourner la valeur de la limite supérieure du canal - comment puis-je le faire ?
La variable int contient exactement le nombre de secondes depuis 1970, tandis que la variable datetime contient la date.
Si vous avez besoin d'une certaine barre dans l'historique, peu importe comment vous la spécifiez - par date ou par nombre de secondes, dans tous les cas, la variable indiquera l'heure d'ouverture de cette barre particulière, indépendamment de l'arrivée de nouveaux ticks et de l'ouverture de nouvelles barres.
Merci beaucoup, mais il y a un autre problème. J'ai un indicateur qui a une fonction stat, cette fonction devrait être utilisée SEULEMENT quand un nouveau signal arrive, mais ce problème compte sur chaque barre, j'ai tout fait et normalisé le double en comparaison, donc je suppose que je suis foutu. Cela a tué toute la soirée, quelqu'un peut-il expliquer ce qui ne va pas ? ? ??? Indicateur dans l'atache dans la ligne 193 est un appel de fonction avec une condition, mais la condition n'est pas remplie et le Furction stat est calculé à l'arrivée de chaque barre, je suis déjà ennuyé pour trouver l'erreur, les gars aidez s'il vous plaît aidez !!!!! Merci d'avance....
J'ai découvert seulement maintenant que la fonction stat est recalculée si l'indicateur est appelé à partir d'un autre indicateur, lorsque les deux sont sur le graphique. C'est-à-dire qu'il est calculé une fois pour lui-même et la seconde fois pour l'indicateur qui l'appelle. Qu'est-ce que c'est ?
L'image montre ce qui suit. Le commentaire en haut est la valeur du tampon dans l'indicateur principal dans lequel le calcul a lieu, et l'impression (en bas) est le même tampon, mais seulement appelé dans un autre indicateur et sorti dans l'impression. La différence est significative, MAIS POURQUOI !!!!!
le premier fichier est le fichier principal, le second appelle le tampon du premier....
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
que dois-je faire maintenant ? j'ai une stratégie basée sur les canaux - existe-t-il une alternative de remplacement ?
que dois-je faire maintenant ? j'ai une stratégie basée sur les canaux - existe-t-il une alternative de remplacement ?
Pour la vente, vous pouvez intégrer avec#resource
la possibilité d'ajouter différentes échéances à UNE feuille (dans différentes fenêtres mais sur une seule feuille)
Veuillez me conseiller sur les endroits où aller et où creuser). Est-ce possible via mql ou WInApi ?
peut-être y a-t-il des exemples de l'article que je n'ai pas pu trouver(
S'il vous plaît, aidez-moi à réparer cela ! Cela donne l'erreur 'Void' - déclaration sans type 36 4 et où réarranger ou écrire return ?
//--------------------------------------------------------------------
Void OnTick()
{
void s'écrit avec une petite minuscule au lieu d'une majuscule. Regarde, c'est une couleur différente. Mettez le curseur sur ce mot et appuyez sur F1 - cela aide souvent.
Tant de messages d'erreur apparaissent après l'avoir réparé... J'ai réparé les messages d'erreur, mais vérifiez la logique vous-même.
void s'écrit avec une petite minuscule et non avec une grande majuscule. Regarde si c'est une couleur différente. Mettez le curseur sur ce mot et appuyez sur F1 - cela aide souvent.
Après l'avoir réparé, de nombreux messages d'erreur apparaissent... J'ai réparé les messages d'erreur, mais vérifiez la logique vous-même.
Merci beaucoup, gentilhomme !
La variable int contient exactement le nombre de secondes depuis 1970, tandis que la variable datetime contient la date.
Si vous avez besoin d'une certaine barre dans l'historique, peu importe comment vous la spécifiez - par date ou par nombre de secondes, dans tous les cas, la variable indiquera l'heure d'ouverture de cette barre particulière, indépendamment de l'arrivée de nouveaux ticks et de l'ouverture de nouvelles barres.
J'ai découvert seulement maintenant que la fonction stat est recalculée si l'indicateur est appelé à partir d'un autre indicateur, lorsque les deux sont sur le graphique. C'est-à-dire qu'il est calculé une fois pour lui-même et la seconde fois pour l'indicateur qui l'appelle. Qu'est-ce que c'est ?
L'image montre ce qui suit. Le commentaire en haut est la valeur du tampon dans l'indicateur principal dans lequel le calcul a lieu, et l'impression (en bas) est le même tampon, mais seulement appelé dans un autre indicateur et sorti dans l'impression. La différence est significative, MAIS POURQUOI !!!!!
le premier fichier est le fichier principal, le second appelle le tampon du premier....