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

От xbms, 13 апреля, 2013 в Уголок Программиста

#1676

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

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

#1677

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

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

#1678

Помогите разобраться я нашёл советник для трала по параболику но не могу ни как сделать чтоб он открывал сделки по индикатору параболик то есть если фишер красный только продажи а если зеленый то только в покупку и тралил дальше
пересмотрел видео уроки но не получается сделать открытие ордеров по 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.zip10 скач.
e-SARTrailing.mq410 скач.
e-SARTrailing.ex48 скач.

Изменено 16 декабря, 2014 пользователем Dotterell

#1679

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

II_SupDem_v2.ex46 скач.

#1680


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

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


Помогите разобраться я нашёл советник для трала по параболику но не могу ни как сделать чтоб он открывал сделки по индикатору параболик то есть если фишер красный только продажи а если зеленый то только в покупку и тралил дальше
пересмотрел видео уроки но не получается сделать открытие ордеров по 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);
}

}
}




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

Изменено 24 ноября, 2017 пользователем Pavel888

#1682

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

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

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

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

#1683


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

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

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

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

Изменено 17 декабря, 2014 пользователем 0ll

#1684

Спасибище огромное за помощь!

#1685

сделка открывается правда не по индикатору и без тейка и стопа но советник доводит его по параболику до закрытия а после ни одной сделки не открывает! советник найден и просто пробую в него добавить открытие сделок выкладываю весь код советника первая часть моя а вот остальное не трогал так как работает как мне надо! а брокер 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);
}
//+------------------------------------------------------------------+

.png16 скач.

Изменено 17 декабря, 2014 пользователем Dotterell

#1686

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

#1687
JR Вычисляешь сумму свопов и комиссий (в валюте депозита) потом делишь на стоимость тика MarketInfo(_Symbol, MODE_TICKVALUE) и умножаешь на суммарный объём корзины (лот).
Пробуй, должно получиться.
#1688

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

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

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

Стрелки там не перерисовываются! Появляются на 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

#1691


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

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



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


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


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

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

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

Расчет.pdf9 скач.

Изменено 21 декабря, 2014 пользователем Yura Vakulenko

#1693



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


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

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

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

[

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

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

#1694



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

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



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

Изменено 21 декабря, 2014 пользователем Yura Vakulenko

#1695




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

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



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

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

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

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

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

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

Изменено 21 декабря, 2014 пользователем Yura Vakulenko

#1697

Спасибо! вроде разобрался со всем только вот у меня есть еще один вопрос можно ли оставить вот такое условие в советнике? или можно его как то упростить?
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
}

#1698

if (h1>=0 && h1 > h2 && SAR1 ma) {Opn_B=true; Cls_S=true;}
if (h2>=0 && h1 Open[1] && Open[1]>ma && Close[1]
#1699

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

Изменено 22 декабря, 2014 пользователем denis77515

#1700

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

Test2.mq49 скач.

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

Перейти к списку тем
Форум · 2.0.20260627.0025