Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано

брокер робофорекс, не ецн.
51 подошло. не ругается

Хотелось бы добавить мин. стоп-лосс, как условие для входа и ММ. так понимаю, для этого расчет СЛ нужно добавить в кейс -1

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

После расчёта СЛ нужно добавить выбор максимума из разницы (цена - расчётныйСЛ) и СтопЛевел
SL = MathMax(MathAbs((dir==OP_BUY)?Bid:Ask)-calcSL), MarketInfo(_Symbol,MODE_STOPLEVEL)*_Point)

Т.к. STOPLEVEL это и есть мин. стоп, но определять его нужно в Инит-е (имхо)

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите разобраться я нашёл советник для трала по параболику но не могу ни как сделать чтоб он открывал сделки по индикатору параболик то есть если фишер красный только продажи а если зеленый то только в покупку и тралил дальше
пересмотрел видео уроки но не получается сделать открытие ордеров по 2 индикаторам
написал вот такой код но открытие происходит только в продажу или в покупку и то только один раз, индикатор и советник прикрепляю.
{

{
double h1 = iCustom(NULL, 0, "Fischer11", 0, 1);
double l1 = iCustom(NULL, 0, "Fischer11", 1, 1);
double h2 = iCustom(NULL, 0, "Fischer11", 2, 1);
double l2 = iCustom(NULL, 0, "Fischer11", 3, 1);

Comment("h1 = " + DoubleToString(h1) + "\n" +
"l1 = " + DoubleToString(l1));
if(Bid >= h1 && CountSell() == 0)
{
SL = NormalizeDouble(Bid + StopLoss * Point, Digits);
TP = NormalizeDouble(Bid - TakeProfit * Point, Digits);
int send1=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 50, 150, MagicNumber, 0, Red);

{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
bool modify1=OrderModify(ticket, OP_SELL, OrderOpenPrice(), SL, TP, 0);

}
}
if(Ask {
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
int send2=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 50, 150, MagicNumber, 0, Blue);

{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
bool modify2=OrderModify(ticket,OP_BUY, OrderOpenPrice(), SL, TP, 0);
}

}
}

Fischer11.zip
e-SARTrailing.mq4
e-SARTrailing.ex4

Изменено пользователем Dotterell
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток! У меня большая просьба, если не сложно, помогите доработать под себя индикатор
-его нужно декомпилировать
-индикатор рисует зоны поддержки/сопротивления, когда цена полностью пробивает зону индикатор ее удаляет, а мне нужно чтобы индикатор рисовал зону до пробития ее ценой и оставлял на графике, чтобы зоны можно было посмотреть на истории

II_SupDem_v2.ex4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Доброго времени суток! У меня большая просьба, если не сложно, помогите доработать под себя индикатор
-его нужно декомпилировать

1. Я-то декомпилировал, но выложу если модераторы дадут добро. с этим сейчас всё жестче.
2. Чтобы работать на истории с этим индюком его нужно очень сильно переписывать, ибо Вы в линиях утоните.
3. В инете полно этих СупДем-ов в исходном коде, Вам что именно этот мод нужен?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Спойлер


Помогите разобраться я нашёл советник для трала по параболику но не могу ни как сделать чтоб он открывал сделки по индикатору параболик то есть если фишер красный только продажи а если зеленый то только в покупку и тралил дальше
пересмотрел видео уроки но не получается сделать открытие ордеров по 2 индикаторам
написал вот такой код но открытие происходит только в продажу или в покупку и то только один раз, индикатор и советник прикрепляю.
{

{
double h1 = iCustom(NULL, 0, "Fischer11", 0, 1);
double l1 = iCustom(NULL, 0, "Fischer11", 1, 1);
double h2 = iCustom(NULL, 0, "Fischer11", 2, 1);
double l2 = iCustom(NULL, 0, "Fischer11", 3, 1);

Comment("h1 = " + DoubleToString(h1) + "\n" +
"l1 = " + DoubleToString(l1));
if(Bid >= h1 && CountSell() == 0)
{
SL = NormalizeDouble(Bid + StopLoss * Point, Digits);
TP = NormalizeDouble(Bid - TakeProfit * Point, Digits);
int send1=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 50, 150, MagicNumber, 0, Red);

{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
bool modify1=OrderModify(ticket, OP_SELL, OrderOpenPrice(), SL, TP, 0);

}
}
if(Ask {
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
int send2=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 50, 150, MagicNumber, 0, Blue);

{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
bool modify2=OrderModify(ticket,OP_BUY, OrderOpenPrice(), SL, TP, 0);
}

}
}




Открытие произошло, а закрытие? в условиях на открытие стоит проверка наличия открытых ордеров и если есть больше не открывает. По идее если СЛ и ТР корректно выставляются, то должно работать - Вы же не весь код выложили и брокера не озвучили, логи, журналы не приложили. Изменено пользователем Pavel888
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

да, мне нужна именно эта версия.
А какие есть варианты чтобы передать мне уже переделанный индюк?

Мне не нужно чтобы индюк чертил зону с того момента как она появилась и до последней свечи, а мне нужно что индюк рисовал и оставлял на графике зону от ее начала и до того, когда эта зона будет пробита ценой

а возможно ли сделать так, что бы в настройках индюка можно было выставлять за какой период времени показывать?Например:история за последние 1-2 месяца

Спасибо огромное, что отозвались на мою просьбу!

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


да, мне нужна именно эта версия.
А какие есть варианты чтобы передать мне уже переделанный индюк?

Мне не нужно чтобы индюк чертил зону с того момента как она появилась и до последней свечи, а мне нужно что индюк рисовал и оставлял на графике зону от ее начала и до того, когда эта зона будет пробита ценой

а возможно ли сделать так, что бы в настройках индюка можно было выставлять за какой период времени показывать?Например:история за последние 1-2 месяца

1. индюка не буду переделывать - очень большая работа не имеющая большого практического смысла. имхо.
2. да, именно так набо-бы сделать, но это и есть большая переделка. ещё надо учитывать, что это декомпил.
3. ограничение по времени это самое простое. Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

сделка открывается правда не по индикатору и без тейка и стопа но советник доводит его по параболику до закрытия а после ни одной сделки не открывает! советник найден и просто пробую в него добавить открытие сделок выкладываю весь код советника первая часть моя а вот остальное не трогал так как работает как мне надо! а брокер Forex4ou


//+----------------------------------------------------------------------------+
//| e-SARTrailing.mq4 |
//| |
//| Ким Игорь В. aka KimIV |
//|
//| |
//| 31.10.2011 Автоматический Trailing Stop по индикатору Parabolic SAR. |
//+----------------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link

//------- Внешние параметры советника -----------------------------------------+
extern string _P_Expert = "---------- Параметры советника";
extern bool AllSymbols = True; // Следить за позициями всех торговых инструментов
extern int MagicNumber = -1; // Идентификатор позиций
extern int TakeProfit = 150;
extern int StopLoss = 50;
extern double Lots = 0.01;
extern int RangePeriods = 55;
extern double PriceSmoothing = 0.03; // =0.67 bei Fisher_m10
extern double IndexSmoothing = 0.00;
extern int Slippage = 5;
extern int Mn = 2007;
extern bool ProfitOnly = False; // Тралить только профит
extern bool UseSound = True; // Использовать звуковой сигнал
extern bool ShowComment = True; // Показывать комментарий

extern string _P_SARTrailing = "---------- Параметры трала по SAR";
extern int SAR_TF = 60; // Таймфрейм Parabolic SAR
extern double SAR_Step = 0.02; // Шаг Parabolic SAR
extern double SAR_Maximum = 0.2; // Максимум Parabolic SAR
extern int SAR_Distance = 0; // Расстояние от SAR в пунктах

double Price, SL, TP;
int ticket;

//------- Глобальные переменные советника -------------------------------------+
bool gbNoInit = False; // Флаг неудачной инициализации
color clModifyBuy = Aqua; // Цвет значка модификации покупки
color clModifySell = Tomato; // Цвет значка модификации продажи
int NumberOfTry = 3; // Количество торговых попыток
string SoundSuccess = "ok.wav"; // Звук успеха
string SoundError = "timeout.wav"; // Звук ошибки

//------- Подключение внешних модулей -----------------------------------------+
#include


//+----------------------------------------------------------------------------+
//| |
//| ПРЕДОПРЕДЕЛЁННЫЕ ФУНКЦИИ |
//| |
//+----------------------------------------------------------------------------+
//| expert initialization function |
//+----------------------------------------------------------------------------+


void init()
{

{
double h1 = iCustom(NULL, 0, "Fischer11", 0, 1);
double l1 = iCustom(NULL, 0, "Fischer11", 1, 1);
double h2 = iCustom(NULL, 0, "Fischer11", 2, 1);
double l2 = iCustom(NULL, 0, "Fischer11", 3, 1);

Comment("h1 = " + DoubleToString(h1) + "\n" +
"l1 = " + DoubleToString(l1));
if(Bid >= h1 && CountSell() == 0)
{
SL = NormalizeDouble(Bid + StopLoss * Point, Digits);
TP = NormalizeDouble(Bid - TakeProfit * Point, Digits);
int send1=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 50, 150, MagicNumber, 0, Red);

{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
bool modify1=OrderModify(ticket, OP_SELL, OrderOpenPrice(), SL, TP, 0);

}
}
if(Ask {
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
int send2=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 50, 150, MagicNumber, 0, Blue);

{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
bool modify2=OrderModify(ticket,OP_BUY, OrderOpenPrice(), SL, TP, 0);
}

}
}

gbNoInit=False;
if (!IsTradeAllowed()) {
Message("Для нормальной работы советника необходимо\n"+
"Разрешить советнику торговать");
gbNoInit=True; return;
}
if (!IsLibrariesAllowed()) {
Message("Для нормальной работы советника необходимо\n"+
"Разрешить импорт из внешних экспертов");
gbNoInit=True; return;
}
if (!IsTesting()) {
if (IsExpertEnabled()) Message("Советник будет запущен следующим тиком");
else Message("Отжата кнопка \"Разрешить запуск советников\"");
}
start();
}

//+----------------------------------------------------------------------------+
//| expert start function |
//+----------------------------------------------------------------------------+
void start() {
if (gbNoInit) {
Message("Не удалось инициализировать советник!"); return;
}
if (ShowComment) {
string st=IIFs(AllSymbols, "AllSymbols ", "");
st=st+"MagicNumber="
+IIFs(MagicNumber +IIFs(ProfitOnly, "ProfitOnly ", "")
+IIFs(UseSound, "UseSound ", "")
+"\n";
st=st+"SAR_TF="+DoubleToStr(SAR_TF, 0)+" "
+"SAR_Step="+DoubleToStr(SAR_Step, 2)+" "
+"SAR_Maximum="+DoubleToStr(SAR_Maximum, 2)+" "
+"SAR.Distance="+DoubleToStr(SAR_Distance, 0);
Comment(st);
} else Comment("");

for (int i=0; i if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (AllSymbols || OrderSymbol()==Symbol()) {
if (MagicNumber SARTrailing();
}
}
}
}
}


//+----------------------------------------------------------------------------+
//| |
//| ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ |
//| |
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, |
//+----------------------------------------------------------------------------+
//| Версия : 01.09.2005 |
//| Описание : Возвращает наименование торговой операции |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| op - идентификатор торговой операции |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("BuyLimit");
case OP_SELLLIMIT: return("SellLimit");
case OP_BUYSTOP : return("BuyStop");
case OP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, |
//+----------------------------------------------------------------------------+
//| Версия : 18.07.2008 |
//| Описание : Возвращает одно из двух значений взависимости от условия. |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, |
//+----------------------------------------------------------------------------+
//| Версия : 01.02.2008 |
//| Описание : Возвращает одно из двух значений взависимости от условия. |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, |
//+----------------------------------------------------------------------------+
//| Версия : 08.03.2013 |
//| Описание : Вывод текстового сообщения. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| ms - текст сообщения |
//| nv - флаги направлений вывода сообщения: (0-выкл, 1-вкл) |
//| Alert, Comment, Print, SendMail, SendNotification |
//| am - флаг всех повторяющихся сообщений |
//+----------------------------------------------------------------------------+
void Message(string ms, string nv="01100", bool am=False) {
static string prevMessage="";
string as[];
int i, k;

if (StrToInteger(StringSubstr(nv, 1, 1))==1) Comment(ms);
if ((StringLen(ms)>0) && (am || prevMessage!=ms)) {
if (StrToInteger(StringSubstr(nv, 0, 1))==1) {
k=StrSplit(ms, as, "\n");
for (i=0; i);
}
if (StrToInteger(StringSubstr(nv, 2, 1))==1) {
k=StrSplit(ms, as, "\n");
for (i=0; i);
}
if (StrToInteger(StringSubstr(nv, 3, 1))==1) SendMail(WindowExpertName(), ms);
if (StrToInteger(StringSubstr(nv, 4, 1))==1) SendNotification(ms);
prevMessage=ms;
}
}

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, |
//+----------------------------------------------------------------------------+
//| Версия : 08.03.2013 |
//| Описание : Модификация одного предварительно выбранного ордера. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| pp - цена установки ордера |
//| sl - ценовой уровень стопа |
//| tp - ценовой уровень тейка |
//| ex - дата истечения |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
double di, op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;

if (pp if (sl if (tp
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);

if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
er=GetLastError();
if (UseSound) PlaySound(SoundError);
di=MarketInfo(OrderSymbol(), MODE_DIGITS);
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Message("Error("+er+") modifying order: "+ErrorDescription(er)+", try "+it+"\n"
+"Ask="+DoubleToStr(pa,di)+" Bid="+DoubleToStr(pb,di)+" sy="+OrderSymbol()
+" op="+GetNameOP(OrderType())+" pp="+DoubleToStr(pp,di)
+" sl="+DoubleToStr(sl,di)+" tp="+DoubleToStr(tp,di));
Sleep(1000*10);
}
}
}
}

//+----------------------------------------------------------------------------+
//| Сопровождение позиций по Parabolic SAR |
//+----------------------------------------------------------------------------+
void SARTrailing() {
double pa, pb, pp, sl;
string sy=OrderSymbol();

pp=MarketInfo(sy, MODE_POINT);
if (OrderType()==OP_BUY) {
pb=MarketInfo(sy, MODE_BID);
sl=iSAR(sy, SAR_TF, SAR_Step, SAR_Maximum, 1);
if (sl sl=sl-SAR_Distance*pp;
if (!ProfitOnly || (pb-OrderOpenPrice()>0 && OrderOpenPrice() if (OrderStopLoss() ModifyOrder(-1, sl, -1);
return;
}
}
}
}
if (OrderType()==OP_SELL) {
pa=MarketInfo(sy, MODE_ASK);
sl=iSAR(sy, SAR_TF, SAR_Step, SAR_Maximum, 1);
if (sl>iHigh(sy, SAR_TF, 1)) {
sl=sl+SAR_Distance*pp;
if (!ProfitOnly || (OrderOpenPrice()-pa>0 && OrderOpenPrice()>sl)) {
if (OrderStopLoss()>sl || OrderStopLoss()==0) {
ModifyOrder(-1, sl, -1);
return;
}
}
}
}
}

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, |
//+----------------------------------------------------------------------------+
//| Версия : 20.01.2012 |
//| Описание : Разбиение строки на массив элементов |
//+----------------------------------------------------------------------------+
//| Возврат: |
//| Количество элементов в массиве |
//| Параметры: |
//| st - строка с разделителями |
//| as - строковый массив |
//| de - разделитель |
//+----------------------------------------------------------------------------+
int StrSplit(string st, string& as[], string de=",")
{
int i=0, np;
string stp;

ArrayResize(as, 0);
while (StringLen(st)>0) {
np=StringFind(st, de);
if (np stp=st;
st="";
} else {
if (np==0) stp=""; else stp=StringSubstr(st, 0, np);
st=StringSubstr(st, np+1);
}
i++;
ArrayResize(as, i);
as[i-1]=stp;
}
return(ArraySize(as));
}
//+----------------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for(int trade = OrdersTotal()-1; trade >= 0; trade--)
{
bool select1=OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for(int trade = OrdersTotal()-1; trade >= 0; trade--)
{
bool select1=OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+

.png

Изменено пользователем Dotterell
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Выдалось немного свободного времени перед праздниками, решил вернуться к изучению MQL. Такой вопрос:
При построении сетки в мартышке, вычисляем БУ, потом прибавляем (отнимаем) ТейкПрофит. Как скорректировать расчет БУ с учетом накопившихся свопов+комиссиий?
Просто при БУ+ТП в сетке это не особо важно, но если использовать (как в ApMGrid) формулу вычисления исходного ТП, без TPBE, то это становится ощутимо важно.
Что-то затупил в этом вопросе :-?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
JR Вычисляешь сумму свопов и комиссий (в валюте депозита) потом делишь на стоимость тика MarketInfo(_Symbol, MODE_TICKVALUE) и умножаешь на суммарный объём корзины (лот).
Пробуй, должно получиться.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Спасибо, я где то так и предполагал, только думал плясать от стоимости пункта.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Dotterell У Вас открытие сделки происходит в функции Инит, которая отрабатывает 1 раз во время запуска.
В главной функции Старт - только трал открытого ордера. Код написан в старой версии МКЛ.
Вам нужно четко представить (желательно на бумаге) как будут открываться и закрываться ордера, иначе никогда ничего не получится.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

дравствуйте! Знающие.. можете помочь верно написать код.. как открывать , а потом и закрывать ордера.. вот по примеру( как на картинке.. Линиии рисовая я руками..)

Стрелки там не перерисовываются! Появляются на 1-м баре (т.е мне нужно чтобы советник открывал ордера не на тиках.. а по закрытию сигнального бара.. т.е. сразу по цене открытия текущего бара, как только на предыдущем нарисовались стрелки.. ) (есть и возможность появления на 0 баре, но это пока не нужно.. ). Их рисует индикатор..

в иникаторе исп 3 буфера.

0 - Основной (Расчетный)
1 - Зона перекупленности
2 - Зона перепроданности

Условие появления стрелки вверх.. (открытие длинной позиции и закрытие всех коротких, если такие имеются... .. по цене открытия текущего бара)
Если (Буфер 0 на 1-м баре > -100 и Буфер 2 на 1-м баре Пуст и Буфер 2 на 2-м баре
Условие появления стрелки вниз.. (открытие короткой позиции и закрытие всех длинных, если такие имеются.. по цене открытия текущего бара)
Если (Буфер 0 на 1-м баре 100 )

И расчет лота для серии ордеров (как на покупку, так и на продажу...)
старт лот 0.01
1-ордер серии - лот 0.01
2-ордер серии - лот 0.02
3-ордер серии - лот 0.03
4-ордер серии - лот 0.06
5-ордер серии - лот 0.12
6-ордер серии - лот 0.24
7-ордер серии - лот 0.48
Как только закрылась серия ордеров - расчет лота для новой позиции повторяется по приведенной выше схеме..

Подскажите, как жто мне в коде написать.. или дайте ссылку на источник с примерами как это делается верно!) Спасибо!!

GBPUSDproH1.png

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


дравствуйте! Знающие.. можете помочь верно написать код.. как открывать , а потом и закрывать ордера.. вот по примеру( как на картинке.. Линиии рисовая я руками..)

Стрелки там не перерисовываются! Появляются на 1-м баре (т.е мне нужно чтобы советник открывал ордера не на тиках.. а по закрытию сигнального бара.. т.е. сразу по цене открытия текущего бара, как только на предыдущем нарисовались стрелки.. ) (есть и возможность появления на 0 баре, но это пока не нужно.. ). Их рисует индикатор..



Индикатор выложи.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Индикатор выложи.


Я дам индикатор (в личку) тому, кто поможет с совой.. в паблик пока не могу выложить..
помогите пожалуйста верно написать условия..

Я дал четкие критерии открытия и закрытия сделок. там не очень тяжелый код.. просто я не так хорошо разбираюсь в программировании)) Спасибо!

----------------------
В приложении сделал статистику торговли по сигналам индикатора и с таким методом расчета лота..
Рассчитывал на стартовый депо в 100 USD

Расчет.pdf

Изменено пользователем Yura Vakulenko
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Индикатор выложи.


Я дам индикатор (в личку) тому, кто поможет с совой.. в паблик пока не могу выложить..
помогите пожалуйста верно написать условия..

Я дал четкие критерии открытия и закрытия сделок. там не очень тяжелый код.. просто я не так хорошо разбираюсь в программировании)) Спасибо!

Ну если на открытии новой свечи как вариан можно так написать
Спойлер

[

datetime timeprev;
if(Time[0] == timeprev) return;
timeprev=Time[0];
if(timeprev) Close_Orders();
или то же как вариант

if(Volume[0] ]
Это как варианты.Надо посмотреть индюк как работает и подробней твои условия изучить.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Ну если на открытии новой свечи как вариан можно так написать

Это как варианты.Надо посмотреть индюк как работает и подробней твои условия изучить.



Неа.. причем там вообще объемы...
Как работает индикатор )) я написал выше)) И условия четкие написал.. сигнал никуда не исчезает..
нужны просто функции, которые откроют ордера, рассчитают лоты, назначят верные лоты каждому ордеру по схеме выше и верно закроют ордера.. Для условий открытия и закрытия используются всего 2 бара (1-й и 2-й. ) 0 бар - не учитывается.. Изменено пользователем Yura Vakulenko
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано




Ну если на открытии новой свечи как вариан можно так написать

Это как варианты.Надо посмотреть индюк как работает и подробней твои условия изучить.



Неа.. причем там вообще объемы...
Как работает индикатор )) я написал выше)) И условия четкие написал.. сигнал никуда не исчезает..
нужны просто функции, которые откроют ордера, рассчитают лоты, назначят верные лоты каждому ордеру по схеме выше и верно закроют ордера.. Для условий открытия и закрытия используются всего 2 бара (1-й и 2-й. ) бар - не учитывается.. )

Ты меня заинтересовал самой идеей, нашел какой то индюк со стрелочками.Сейчас попробую написать,может чего получится.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

вот как пример формирования сигнала можно еще тут посмотреть..
_https://www.mql5.com/ru/market/product/5894 (этот индикатор я очень хочу приобрести.. но пока денег нету)) мой похуже немного будет, но принципы почти одинаковые..)

Там в обсуждениях найдетшь еще больше картинок и 3 видео с работой индикатора..
Вот если получится у меня написать сову по моему инди, там тогда можно будет более точно найти оптимальные значения.. и просчитать просадк и прочее.. отчет, который я скинул - этот я руками проверял сигналы и в экселе делал расчеты. Торговать можно не только на фунте.. подойдет любая волотильная пара с достаточно большой болтанкой.. и не длительными трендами (так как при блительных трендах будет часто достигатся уровень перекупленности\перепроданности и часто появлятся ложные разворотные сигналы.. )

Что мой индикатор, что индикатор из маркета - не рисуются.. и сигналы никуда не исчезают.. даются сигналы сразу после открытия 0 бара без опоздания

----------------------------------------
П.с. еще один неплохой индикатор, на основе которого хочу написать советник.. можешь скачать из моего поста здесь. Индикатор тоже не рисуется. И достаточно легко настраивается. в отличии от этого - для него нужны пары с длительными трендами.. в общем, если поможете написать советники на этих вещах и сделать их достаточно безопасными, думаю, не только я буду благодарен))

Изменено пользователем Yura Vakulenko
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Спасибо! вроде разобрался со всем только вот у меня есть еще один вопрос можно ли оставить вот такое условие в советнике? или можно его как то упростить?
if (h1>=0 && h1 > h2)
if (SAR1 if(Open[1]ma)
{
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (h2>=0 && h1 if (SAR1 > Open[1])
if(Open[1]>ma && Close[1] {
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Yura Vakulenko я чего то не вкурил твои правила входа в и выхода в рынок по этому индюку.Вот что он показывает.как с ним работать я пока не понял ?


Добавлено: 22-12-2014 17:39:48

Yura Vakulenko,я понаблюдал за индикатором и понял что за продажу отвечает буфер 1, за пакупку буфер 3. и нулевой сигналка. Значит на пакупку входим когда открывается новый бар и есть сигналы от трех буферов, то есть Сигнальный больше - 100, буфер 1 со смещением в 1 бар, то же больше -100,и буфер 1 со смещением в 2 бара то же больше -100. Открываем ордер. Далее если поступают сигналы пока нет противоположного открываем сетку ордеров с использованием мартина.При появлении противоположного сигнала закрываем сетку ордеров. Тут же окрываем в обратную сторону ,все повторяется до противоположного сигнала индюка. Я правильно понял идею твоей системы ?

2014-12-22_21-54-03_Скриншот_экрана.png

Изменено пользователем denis77515
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток! Может кто-нибудь посмотреть: написал по второму уроку советника, все делал вроде так же, как в уроке. Советник не тестируется.

Test2.mq4

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...