Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да, я хочу сделать 3 шага
Пример:
Дойти до 15 и вернуться на 10
Достичь 30 и вернуться 15
Достичь 45 и вернуться на 15
Или закрыться по стоп-лоссу.
Я сделаю фотографию и постараюсь объяснить лучше.
Это что-то новое для меня.
Значит, при закрытии убыточной сделки всегда нужно ждать отскока, так?
А если отскока не будет?
Мы закроемся на начальном SL?Спасибо, я уже сделал это, теперь пытаюсь оптимизировать, чтобы получить хорошие результаты с этой защитой от потерь.
Я пытаюсь найти информацию о построении линии, как в индикаторе RSI, например. У меня есть два числа, которые я хочу построить как линии на одном индикаторе.
Я знаю, что для этого потребуется какой-то массив, но мне не удается понять, какая группа кода поможет это сделать.
индикаторный буфер
Я пытаюсь найти информацию о построении линии, как в индикаторе RSI, например. У меня есть два числа, которые я хочу построить как линии на одном индикаторе. Я знаю, что для этого нужно использовать какой-то массив, но мне не удается понять, какая группа кода позволит это сделать.
Пожалуйста, прочитайте эту статью
Язык MQL4 для новичков. Пользовательские индикаторы (часть 1) - Статьи по MQL4
Привет, народ,
Я не знаю, знаком ли кто-нибудь с Forex Made-EZ Джорджа Смита.
В настоящее время я изучаю его работы и задался вопросом, не кодировал ли кто-нибудь индикатор для осциллятора Oscar, который он использует?
Формула такова
пусть A = самый высокий максимум за последние восемь баров (включая этот)
пусть B = самый низкий минимум за последние восемь баров (включая этот)
пусть C = цена закрытия текущего бара
пусть X = предыдущая фигура осциллятора (Оскар).
Сегодняшний "грубый" осциллятор равен (C-B), разделенному на (A-B), умноженному на 100.
Далее мы "сглаживаем" наше грубое число (назовем его Y) следующим образом:
Окончательное число осциллятора = ((X разделить на 3) умножить на 2), плюс (Y разделить на 3).
Если кто-либо кодировал или может кодировать это, буду очень признателен.
С уважением, СтивЯ попробовал закодировать это сам. Может ли кто-нибудь прокомментировать, делает ли это то, что я думаю. Значения не совсем совпадают с теми, которые получаются, если я вручную вычисляю цифры. Кроме того, он запускается только с момента установки индикатора. Я бы хотел, чтобы он показывал и исторические значения.
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- буферы
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- индикаторы
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
string short_name = "Oscar Indicator";
IndicatorShortName(short_name);
//----
return(1);
}
//+------------------------------------------------------------------+
//| Функция деинициализации индикатора Custor |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- проверка на возможные ошибки
if (counted_bars<0) return(-1);
//---- последний подсчитанный бар будет пересчитан.
if (counted_bars>0) counted_bars--;
int pos=Bars-counted_bars;
//---- основной цикл вычислений
double x;
x=50;
while(pos>=0)
{
double a, b, c, y, osc;
//let A = самый высокий максимум последних восьми баров (включая этот)
a=High;
//let B = самый низкий минимум за последние восемь баров (включая этот)
b=Low;
//let C = цена закрытия текущего бара
c = Close[pos];
//let X = предыдущая фигура осциллятора (Oscar)
//Сегодняшний "грубый" осциллятор равен (C-B) деленному на (A-B) умноженному на 100.
y=((c-b)/(a-b))*100;
//Следует "сгладить" наше грубое число (назовем его Y) следующим образом:
//Окончательное число осциллятора = ((X разделить на 3) умножить на 2), плюс (Y разделить на 3).
osc=((x/3)*2)+(y/3);
ExtMapBuffer1[pos]= osc ;
pos--;
}
return(0);
}
Любая помощь будет принята с благодарностью.
Спасибо, Стив
Спросите... Режим_торговли
Здравствуйте, может ли кто-нибудь привести пример использования MODE_TRADES?
Спасибо.
To smb1970 - вот оно:
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_maximum 100
#property indicator_minimum 0
//
//
//
//
//
extern int OscPeriod = 8;
extern int OscPrice = PRICE_CLOSE;
double oscBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
int init()
{
SetIndexBuffer(0,oscBuffer);
IndicatorShortName("Osc ("+OscPeriod+")");
return(0);
}
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//
//
//
//
//
for(i=limit; i>=0; i--)
{
double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);
double high = High[ArrayMaximum(High,OscPeriod,i)];
double low = Low[ArrayMinimum(Low,OscPeriod,i)];
//
//
//
//
//
if (high!=low)
double raw = 100.00*(price-low)/(high-low);
else raw = 0.00;
oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;
}
return(0);
}Но посмотрите на картинку: вверху - "Оскар", внизу - Ema(5) стохастика(8), или, если еще проще, внизу - Stochastic(8,5,1) с сигнальной линией, установленной на экспоненциальную. Таким образом, "Оскар" - это просто сигнальная линия стохастика.
Спасибо!
Спасибо mladen, это не только очень полезно, но и очень показательно!
NewB нужна помощь в кодировании :-(
Привет всем,
Мне нужна разрозненная помощь здесь . У меня есть некоторый код, который будет искать согласие между различными индикаторами. Как только они все согласны, я хочу, чтобы сделки входили так, как я описал это в изображениях графиков. Пока что я могу ввести 1 сделку "Buy", но она не вводит только 1 сделку...., а вводит до 8 сделок. И затем, если рынок идет против меня, я вхожу в "непредвиденную сделку", где я снова покупаю/продаю, несмотря на то, что рынок идет против меня. Я буду очень признателен, если кто-нибудь покажет мне, как должен выглядеть правильный код.
Не уверен, что эти изображения отобразятся, но на всякий случай я приложил их в качестве вложений.
Вот мой неполноценный код, который должен выполнить сделку...
while (execute_trade ==5)
{if (OrdersTotal() == buy_trade1 ) //buy_trade1 = 1... это останавливает его после того, как 1 ордер был размещен... но пока не работает
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
execute_trade=0;
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
Print("My ticket is: " , ticket);
{
buy1 = OrderOpenPrice(); //берем цену 1-го ордера и заталкиваем ее в эту переменную
// Комментарий(" цена открытия ордера №1 составляет ", OrderOpenPrice() + " " + buy1 + " меньше чем " + (buy1-0.0030));
if (buy1 >= (buy1-0.0030))
{
//if ( OrdersTotal() <= buy_trade1 ) //это останавливает его после размещения 1 ордера.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
//execute_trade=0;
}
} else
Print("OrderSelect вернул ошибку ",GetLastError());
}
NewB нуждается в помощи в кодировании
Привет всем,
Мне нужна разрозненная помощь. У меня есть код, который будет искать согласие между различными индикаторами. Как только они все согласятся, я хочу, чтобы сделки входили так, как я описал это в изображениях графиков. Пока что я могу ввести 1-ю сделку "Buy", но она не вводит только 1 сделку...., а вводит до 8 сделок. И затем, если рынок идет против меня, я вхожу в "непредвиденную сделку", где я снова покупаю/продаю, несмотря на то, что рынок идет против меня.Я буду очень признателен, если кто-нибудь покажет мне, как должен выглядеть правильный код.
Не уверен, что эти изображения будут показаны, но на всякий случай я прикрепляю их в качестве вложений.
Рис. 1
Рис. 2
Вот мой неполноценный код, который должен выполнить сделку...
while (execute_trade ==5)
{if (OrdersTotal() == buy_trade1 ) //buy_trade1 = 1... это останавливает его после того, как 1 ордер был размещен... но пока не работает
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);
execute_trade=0;
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
Print("My ticket is: " , ticket);
{
buy1 = OrderOpenPrice(); //берем цену 1-го ордера и заталкиваем ее в эту переменную
// Комментарий(" цена открытия ордера №1 составляет ", OrderOpenPrice() + " " + buy1 + " меньше чем " + (buy1-0.0030));
if (buy1 >= (buy1-0.0030))
{
//if ( OrdersTotal() <= buy_trade1 ) //это останавливает его после размещения 1 ордера.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);
//execute_trade=0;
}
}
else
Print("OrderSelect вернул ошибку ",GetLastError());
}