[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 19
Aiuto script tweak che significherebbe aprire un affare immediatamente, al prezzo di mercato corrente. Un chet, sono già vapore fino Distanza dal pesce in 5 pip non è soddisfatto, e così che sarebbe almeno con una deviazione nello scambio.
Indice del valore ricevuto dal buffer dell'indicatore (spostamento relativo alla barra corrente del numero specificato di periodi indietro).
Nell 'indicatore Fractals. Se penso correttamente - l'indicatore mostra il valore dell'estremo tra cinque barre con la condizione che i massimi di due barre precedenti e due barre successive (nel caso di un frattale verso l'alto) siano più piccoli (anche se l'"uccellino" di un frattale viene mostrato sul grafico anche quando l'estremo della barra più a sinistra di quelle cinque = estremo ......, non più piccolo di esso). Allora perché spostarsi? Cosa verrà mostrato se lo spostamento non è uguale a 3 ma uguale a 2 o 5?
Ho fatto questo codice per entrare nel mercato dopo la prima rottura frattale dopo la rottura del MA. Ma quando viene testato, non apre i trade ovunque, anche se sembra che debba farlo. Non riesco a capire cosa c'è di sbagliato? In modalità reale (quando controllo su M1 non trovo l'errore).
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);
}
//+------------------------------------------------------------------+
E finché non funziona nel tester, non ha senso usarlo per l'ottimizzazione con un errore. Qual è l'errore... ?
Leonid82, High[1] è il prezzo massimo della prima candela. Per ottenerlo, avete solo bisogno di fare questo script. E questo prezzo non si ottiene dall'Expert Advisor, ma dal terminale.
Congratulazioni a voi!
Le congratulazioni sono d'obbligo. Anche se un colpo in aria non fa male a nessuno.
Le congratulazioni sono d'obbligo. Anche se un colpo in aria non fa male a nessuno.
Victor, il tuo Skype non funziona o la tua connessione sta morendo? Cos'è la ZZ?
Sì, sto dicendo che forse dovrei fare uno zapper speciale. Non è il mio Skype che sta morendo. Ti ho preso in verde.
Non c'è storia o ci sono errori nella storia
Buona sera!
Non riesco a dare un senso al
Nell 'indicatore Fractals. Se penso correttamente - l'indicatore mostra il valore dell'estremo tra cinque barre con la condizione che i massimi di due barre precedenti e due barre successive (nel caso di un frattale verso l'alto) siano più piccoli (anche se l'"uccellino" di un frattale viene mostrato sul grafico anche quando l'estremo della barra più a sinistra di quelle cinque = estremo ......, non più piccolo di esso). Allora perché spostarsi? Cosa verrà mostrato se lo spostamento non è uguale a 3 ma uguale a 2 o 5?
Ho fatto questo codice per entrare nel mercato dopo la prima rottura frattale dopo la rottura del MA. Ma quando viene testato, non apre i trade ovunque, anche se sembra che debba farlo. Non riesco a capire cosa c'è di sbagliato? In modalità reale (quando controllo su M1 non trovo l'errore).
E finché non funziona nel tester, non ha senso usarlo per l'ottimizzazione con un errore. Qual è l'errore... ?Leonid82 24.01.2011 19:51
Ciao, ho un Expert Advisor che funziona con EURUSD. Come posso ottenere High[1] su GBPUSD per esempio?
Grazie per il vostro aiuto.
Leonid82, High[1] è il prezzo massimo della prima candela. Per ottenerlo, avete solo bisogno di fare questo script. E questo prezzo non si ottiene dall'Expert Advisor, ma dal terminale.