брокер робофорекс, не ецн.
51 подошло. не ругается
Хотелось бы добавить мин. стоп-лосс, как условие для входа и ММ. так понимаю, для этого расчет СЛ нужно добавить в кейс -1
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
После расчёта СЛ нужно добавить выбор максимума из разницы (цена - расчётныйСЛ) и СтопЛевел
SL = MathMax(MathAbs((dir==OP_BUY)?Bid:Ask)-calcSL), MarketInfo(_Symbol,MODE_STOPLEVEL)*_Point)
Т.к. STOPLEVEL это и есть мин. стоп, но определять его нужно в Инит-е (имхо)
Помогите разобраться я нашёл советник для трала по параболику но не могу ни как сделать чтоб он открывал сделки по индикатору параболик то есть если фишер красный только продажи а если зеленый то только в покупку и тралил дальше
пересмотрел видео уроки но не получается сделать открытие ордеров по 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);
}
}
}
Изменено 16 декабря, 2014 пользователем Dotterell
Доброго времени суток! У меня большая просьба, если не сложно, помогите доработать под себя индикатор
-его нужно декомпилировать
-индикатор рисует зоны поддержки/сопротивления, когда цена полностью пробивает зону индикатор ее удаляет, а мне нужно чтобы индикатор рисовал зону до пробития ее ценой и оставлял на графике, чтобы зоны можно было посмотреть на истории
1. Я-то декомпилировал, но выложу если модераторы дадут добро. с этим сейчас всё жестче.
Доброго времени суток! У меня большая просьба, если не сложно, помогите доработать под себя индикатор
-его нужно декомпилировать
2. Чтобы работать на истории с этим индюком его нужно очень сильно переписывать, ибо Вы в линиях утоните.
3. В инете полно этих СупДем-ов в исходном коде, Вам что именно этот мод нужен?
Помогите разобраться я нашёл советник для трала по параболику но не могу ни как сделать чтоб он открывал сделки по индикатору параболик то есть если фишер красный только продажи а если зеленый то только в покупку и тралил дальше
пересмотрел видео уроки но не получается сделать открытие ордеров по 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
да, мне нужна именно эта версия.
А какие есть варианты чтобы передать мне уже переделанный индюк?
Мне не нужно чтобы индюк чертил зону с того момента как она появилась и до последней свечи, а мне нужно что индюк рисовал и оставлял на графике зону от ее начала и до того, когда эта зона будет пробита ценой
а возможно ли сделать так, что бы в настройках индюка можно было выставлять за какой период времени показывать?Например:история за последние 1-2 месяца
Спасибо огромное, что отозвались на мою просьбу!
1. индюка не буду переделывать - очень большая работа не имеющая большого практического смысла. имхо.
да, мне нужна именно эта версия.
А какие есть варианты чтобы передать мне уже переделанный индюк?
Мне не нужно чтобы индюк чертил зону с того момента как она появилась и до последней свечи, а мне нужно что индюк рисовал и оставлял на графике зону от ее начала и до того, когда эта зона будет пробита ценой
а возможно ли сделать так, что бы в настройках индюка можно было выставлять за какой период времени показывать?Например:история за последние 1-2 месяца
2. да, именно так набо-бы сделать, но это и есть большая переделка. ещё надо учитывать, что это декомпил.
3. ограничение по времени это самое простое.
Изменено 17 декабря, 2014 пользователем 0ll
Спасибище огромное за помощь!
сделка открывается правда не по индикатору и без тейка и стопа но советник доводит его по параболику до закрытия а после ни одной сделки не открывает! советник найден и просто пробую в него добавить открытие сделок выкладываю весь код советника первая часть моя а вот остальное не трогал так как работает как мне надо! а брокер 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);
}
//+------------------------------------------------------------------+
Изменено 17 декабря, 2014 пользователем Dotterell
Выдалось немного свободного времени перед праздниками, решил вернуться к изучению MQL. Такой вопрос:
При построении сетки в мартышке, вычисляем БУ, потом прибавляем (отнимаем) ТейкПрофит. Как скорректировать расчет БУ с учетом накопившихся свопов+комиссиий?
Просто при БУ+ТП в сетке это не особо важно, но если использовать (как в ApMGrid) формулу вычисления исходного ТП, без TPBE, то это становится ощутимо важно.
Что-то затупил в этом вопросе :-?
Пробуй, должно получиться.
Спасибо, я где то так и предполагал, только думал плясать от стоимости пункта.
В главной функции Старт - только трал открытого ордера. Код написан в старой версии МКЛ.
Вам нужно четко представить (желательно на бумаге) как будут открываться и закрываться ордера, иначе никогда ничего не получится.
дравствуйте! Знающие.. можете помочь верно написать код.. как открывать , а потом и закрывать ордера.. вот по примеру( как на картинке.. Линиии рисовая я руками..)
Стрелки там не перерисовываются! Появляются на 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
Как только закрылась серия ордеров - расчет лота для новой позиции повторяется по приведенной выше схеме..
Подскажите, как жто мне в коде написать.. или дайте ссылку на источник с примерами как это делается верно!) Спасибо!!
дравствуйте! Знающие.. можете помочь верно написать код.. как открывать , а потом и закрывать ордера.. вот по примеру( как на картинке.. Линиии рисовая я руками..)
Стрелки там не перерисовываются! Появляются на 1-м баре (т.е мне нужно чтобы советник открывал ордера не на тиках.. а по закрытию сигнального бара.. т.е. сразу по цене открытия текущего бара, как только на предыдущем нарисовались стрелки.. ) (есть и возможность появления на 0 баре, но это пока не нужно.. ). Их рисует индикатор..
Индикатор выложи.
Индикатор выложи.
Я дам индикатор (в личку) тому, кто поможет с совой.. в паблик пока не могу выложить..
помогите пожалуйста верно написать условия..
Я дал четкие критерии открытия и закрытия сделок. там не очень тяжелый код.. просто я не так хорошо разбираюсь в программировании)) Спасибо!
----------------------
В приложении сделал статистику торговли по сигналам индикатора и с таким методом расчета лота..
Рассчитывал на стартовый депо в 100 USD
Изменено 21 декабря, 2014 пользователем Yura Vakulenko
Индикатор выложи.
Я дам индикатор (в личку) тому, кто поможет с совой.. в паблик пока не могу выложить..
помогите пожалуйста верно написать условия..
Я дал четкие критерии открытия и закрытия сделок. там не очень тяжелый код.. просто я не так хорошо разбираюсь в программировании)) Спасибо!
Ну если на открытии новой свечи как вариан можно так написать
[
datetime timeprev;
if(Time[0] == timeprev) return;
timeprev=Time[0];
if(timeprev) Close_Orders();
или то же как вариант
if(Volume[0] ]
Это как варианты.Надо посмотреть индюк как работает и подробней твои условия изучить.
Ну если на открытии новой свечи как вариан можно так написать
Это как варианты.Надо посмотреть индюк как работает и подробней твои условия изучить.
Неа.. причем там вообще объемы...
Как работает индикатор )) я написал выше)) И условия четкие написал.. сигнал никуда не исчезает..
нужны просто функции, которые откроют ордера, рассчитают лоты, назначят верные лоты каждому ордеру по схеме выше и верно закроют ордера.. Для условий открытия и закрытия используются всего 2 бара (1-й и 2-й. ) 0 бар - не учитывается..
Изменено 21 декабря, 2014 пользователем Yura Vakulenko
Ну если на открытии новой свечи как вариан можно так написать
Это как варианты.Надо посмотреть индюк как работает и подробней твои условия изучить.
Неа.. причем там вообще объемы...
Как работает индикатор )) я написал выше)) И условия четкие написал.. сигнал никуда не исчезает..
нужны просто функции, которые откроют ордера, рассчитают лоты, назначят верные лоты каждому ордеру по схеме выше и верно закроют ордера.. Для условий открытия и закрытия используются всего 2 бара (1-й и 2-й. ) бар - не учитывается.. )
Ты меня заинтересовал самой идеей, нашел какой то индюк со стрелочками.Сейчас попробую написать,может чего получится.
вот как пример формирования сигнала можно еще тут посмотреть..
_https://www.mql5.com/ru/market/product/5894 (этот индикатор я очень хочу приобрести.. но пока денег нету)) мой похуже немного будет, но принципы почти одинаковые..)
Там в обсуждениях найдетшь еще больше картинок и 3 видео с работой индикатора..
Вот если получится у меня написать сову по моему инди, там тогда можно будет более точно найти оптимальные значения.. и просчитать просадк и прочее.. отчет, который я скинул - этот я руками проверял сигналы и в экселе делал расчеты. Торговать можно не только на фунте.. подойдет любая волотильная пара с достаточно большой болтанкой.. и не длительными трендами (так как при блительных трендах будет часто достигатся уровень перекупленности\перепроданности и часто появлятся ложные разворотные сигналы.. )
Что мой индикатор, что индикатор из маркета - не рисуются.. и сигналы никуда не исчезают.. даются сигналы сразу после открытия 0 бара без опоздания
----------------------------------------
П.с. еще один неплохой индикатор, на основе которого хочу написать советник.. можешь скачать из моего поста здесь. Индикатор тоже не рисуется. И достаточно легко настраивается. в отличии от этого - для него нужны пары с длительными трендами.. в общем, если поможете написать советники на этих вещах и сделать их достаточно безопасными, думаю, не только я буду благодарен))
Изменено 21 декабря, 2014 пользователем Yura Vakulenko
Спасибо! вроде разобрался со всем только вот у меня есть еще один вопрос можно ли оставить вот такое условие в советнике? или можно его как то упростить?
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
}
if (h1>=0 && h1 > h2 && SAR1 ma) {Opn_B=true; Cls_S=true;}
if (h2>=0 && h1 Open[1] && Open[1]>ma && Close[1]Yura Vakulenko я чего то не вкурил твои правила входа в и выхода в рынок по этому индюку.Вот что он показывает.как с ним работать я пока не понял ?
Добавлено: 22-12-2014 17:39:48
Yura Vakulenko,я понаблюдал за индикатором и понял что за продажу отвечает буфер 1, за пакупку буфер 3. и нулевой сигналка. Значит на пакупку входим когда открывается новый бар и есть сигналы от трех буферов, то есть Сигнальный больше - 100, буфер 1 со смещением в 1 бар, то же больше -100,и буфер 1 со смещением в 2 бара то же больше -100. Открываем ордер. Далее если поступают сигналы пока нет противоположного открываем сетку ордеров с использованием мартина.При появлении противоположного сигнала закрываем сетку ордеров. Тут же окрываем в обратную сторону ,все повторяется до противоположного сигнала индюка. Я правильно понял идею твоей системы ?
Изменено 22 декабря, 2014 пользователем denis77515
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем