[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 19
Une modification du script d'aide permettrait d'ouvrir une transaction immédiatement, au prix actuel du marché. Un chet, je suis déjà vapeur jusqu'à Distance de la pêche dans 5 pips n'est pas satisfait, et donc qui serait au moins avec une déviation dans le swap.
Index de la valeur reçue du tampon de l'indicateur (décalage par rapport à la barre actuelle du nombre de périodes en arrière spécifié).
Dans l'indicateur Fractals. Si je pense correctement - l'indicateur montre la valeur extremum parmi cinq barres avec la condition que les maxima de deux barres précédentes et deux suivantes (dans le cas d'une fractale vers le haut) sont plus petits (bien que le "birdie" d'une fractale soit montré sur le graphique aussi quand l'extremum de la barre la plus à gauche de ces cinq = extremum ......, pas plus petit que lui). Alors pourquoi changer ? Que se passe-t-il si le décalage n'est pas égal à 3 mais à 2 ou à 5 ?
J'ai fait ce code pour entrer sur le marché après la première rupture fractale après la rupture MA. Mais lorsqu'on le teste, il n'ouvre pas de transactions partout, alors qu'il semble être censé le faire. Je ne comprends pas ce qui ne va pas. En mode réel (en vérifiant sur M1 je ne trouve pas l'erreur).
externint Period_MA = 5, // Период расчётной МА
PERIOD=1, // Период текущего графика (таймфрейм)
MODE=3, // Метод усреднения из методов скользящего среднего
PRICE_TYPE=0, // Используемая цена из ценовых констант
Прибыль=10,
Ограничение=55;
double
upfractal,
dwfractal,
SL[10001]={0,,10000},
TP[10001]={0,,10000};
bool Двверх=false,
Дввниз=false,
Сделкавверх=false,
Сделкавниз=false;
int A, // Переменная массива вверх
B, // Переменная массива вниз
BarTime, // Время текущего бара
ticketup, // Ордер вверх
ticketdown, // Ордер вниз
Tвверх, // Время сделки вверх
Tвниз; // Время сделки вниз;color вверх = SpringGreen, // Цвет сделки вверх
вниз = Red; // Цвет сделки вниз int start()
{
string Symb=Symbol(); // Финанс. инструментdouble Lot=0.01; // Лотif(BarTime!=Time[0]) // Условие для того, чтобы программа считала только на начале бара, а не на каждом тике
{
double MA_1 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 1);
double MA_2 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 2);
double MA_3 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 3);
double MA_4 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 4);
double MA_5 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 5);
double MA_6 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 6);
double MA_7 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 7);
double MA_8 = iMA(Symbol(),PERIOD,Period_MA,0,MODE, PRICE_TYPE, 8);
//--------------------------------------------------------------------if(NormalizeDouble(MA_8,Digits)>NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_7,Digits)>=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_6,Digits)>=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_5,Digits)>=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_3,Digits)>=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_4,Digits)>=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_2,Digits)<NormalizeDouble(MA_1,Digits)) // Перелом вверх
{
Двверх=true;
Alert("Двверх");
Дввниз=false;
Сделкавниз=false;
dwfractal=0;
upfractal=0;
}
if(Двверх==true)
{
upfractal=iFractals(Symbol(), PERIOD, MODE_UPPER, 3);
Alert("upfractal вначале = ",upfractal);
}
if(NormalizeDouble(MA_8,Digits)<NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_7,Digits)<=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_6,Digits)<=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_5,Digits)<=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_3,Digits)<=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_4,Digits)<=NormalizeDouble(MA_2,Digits)
&& NormalizeDouble(MA_2,Digits)>NormalizeDouble(MA_1,Digits)) // Перелом вниз
{
Дввниз=true;
Двверх=false;
Alert("Дввниз");
Сделкавверх=false;
upfractal=0;
dwfractal=0;
}
if(Дввниз==true)
{
dwfractal=iFractals(Symbol(),PERIOD, MODE_LOWER, 3);
Alert("dwfractal вначале = ",dwfractal);
}
BarTime=Time[0];
}else// На каждый тик
{
Alert("upfractal на тиках = ",upfractal,", Bid = ", Bid);
if (Двверх==true && upfractal !=0 && Bid > NormalizeDouble(upfractal+1*Point,Digits) && Tвверх!=Time[0] && Сделкавверх==false) // Открытие ордеров при пробитии последнего (свежайшего) фрактала }
{
Alert("upfractal = ",upfractal, ", Ask = ",Ask);
Tвверх=Time[0];
while(true) // Цикл открытия орд.
{
A++;
SL[A]=Bid-Ограничение*Point;
TP[A]=Bid+7*Point+Прибыль*Point;
ticketup=OrderSend(Symb, OP_BUY, Lot, Ask,0, SL[A], TP[A],NULL,A,0,вверх); // Ордер вверхint Error=GetLastError();
switch(Error) // Преодолимые ошибки
{
case6: Alert("Нет связи с торговым сервером. Пробуем ещё раз..");
RefreshRates(); // Обновим данныеSleep(1); // Задержка в цикле до нового тикаcontinue; // На след. итерацию
}
break; // Выход из цикла
}
Сделкавверх=true;
}
Alert("dwfractal на тиках = ",dwfractal,", Bid = ", Bid);
if (Дввниз==true && dwfractal !=0 && Bid < NormalizeDouble(dwfractal-1*Point,Digits) && Tвниз!=Time[0] && Сделкавниз==false) // Открытие ордеров при пробитии последнего (свежайшего) фрактала }
{
Alert("dwfractal = ",dwfractal, ", Bid = ",Bid);
Tвниз=Time[0];
while(true) // Цикл открытия орд.
{
B++;
SL[B]=Bid+Ограничение*Point;
TP[B]=Bid-4*Point-Прибыль*Point;
ticketdown=OrderSend(Symb, OP_SELL, Lot, Bid,0, SL[B], TP[B],NULL,B,0,вниз); // Ордер вниз
Error=GetLastError();
switch(Error) // Преодолимые ошибки
{
case6: Alert("Нет связи с торговым сервером. Пробуем ещё раз..");
RefreshRates(); // Обновим данныеSleep(1); // Задержка в цикле до нового тикаcontinue; // На след. итерацию
}
break; // Выход из цикла
}
Сделкавниз=true;
}
}
//----return(0);
}
//+------------------------------------------------------------------+
Et tant que cela ne fonctionne pas dans le testeur, il est inutile de l'utiliser pour l'optimisation avec une erreur. Quelle est l'erreur... ?
Leonid82, High[1] est le prix haut de la première bougie. Pour l'obtenir, il suffit de réaliser ce script. Et ce prix est obtenu non pas à partir du conseiller expert, mais à partir du terminal.
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.
Félicitations à VOUS !
Des félicitations s'imposent. Bien qu'un tir en l'air ne fasse de mal à personne.
Des félicitations s'imposent. Bien qu'un tir en l'air ne fasse de mal à personne.
Victor, votre Skype est en panne ou votre connexion est en train de lâcher ? C'est quoi le ZZ ?
Ouais, je dis que peut-être je devrais faire un zapper spécial. Ce n'est pas mon Skype qui est en train de mourir. Je t'ai eu en vert.
Il n'y a pas d'histoire ou il y a des erreurs dans l'histoire.
Bonsoir !
Je n'arrive pas à donner un sens à la...
Dans l'indicateur Fractals. Si je pense correctement - l'indicateur montre la valeur extremum parmi cinq barres avec la condition que les maxima de deux barres précédentes et deux suivantes (dans le cas d'une fractale vers le haut) sont plus petits (bien que le "birdie" d'une fractale soit montré sur le graphique aussi quand l'extremum de la barre la plus à gauche de ces cinq = extremum ......, pas plus petit que lui). Alors pourquoi changer ? Que se passe-t-il si le décalage n'est pas égal à 3 mais à 2 ou à 5 ?
J'ai fait ce code pour entrer sur le marché après la première rupture fractale après la rupture MA. Mais lorsqu'on le teste, il n'ouvre pas de transactions partout, alors qu'il semble être censé le faire. Je ne comprends pas ce qui ne va pas. En mode réel (en vérifiant sur M1 je ne trouve pas l'erreur).
Et tant que cela ne fonctionne pas dans le testeur, il est inutile de l'utiliser pour l'optimisation avec une erreur. Quelle est l'erreur... ?Leonid82 24.01.2011 19:51
Bonjour, j'ai un Conseiller Expert qui fonctionne avec l'EURUSD. Comment puis-je obtenir High[1] sur GBPUSD par exemple ?
Merci pour votre aide.
Leonid82, High[1] est le prix haut de la première bougie. Pour l'obtenir, il suffit de réaliser ce script. Et ce prix est obtenu non pas à partir du conseiller expert, mais à partir du terminal.