24 минуты назад, Александр 1939 сказал:(Курс молодого бойца)не могу получить не приходит письмо для скачивания-как быть??
Получите ссылочку http://tlap.io/wppage/videokurs-mql4-programmirovanie/
От xbms, 13 апреля, 2013 в Уголок Программиста
24 минуты назад, Александр 1939 сказал:(Курс молодого бойца)не могу получить не приходит письмо для скачивания-как быть??
Получите ссылочку http://tlap.io/wppage/videokurs-mql4-programmirovanie/
Доброго времени суток!
Вот написал небольшой простенький советник-сеточник. Скомпилировал, ошибок не выдает. Но при тестировании обратил внимание, что новые дополнительные сделки открываются без изменения коэффициента лота, шага и ТР, как это предусмотрено прописанной логикой. Да и ограничение максимального количества дополнительных сделок не срабатывает. То есть например после открытия стартовой сделки лотом 0,1 советник должен открыть 3 дополнительные сделки лотом 0,05, потом еще 5 дополнительных сделок лотом 0,02 и тд. А он после стартовой сделки начинает открывать все дополнительные сделки лотом 0,05 и не контролирует их общее количество. Странно. Все проверил, думал функция CountTrades() неправильно считает открытые ордера, но тоже вроде правильно написано.
Подскажите плиз в чем ошибка, Заранее благодарен.
//+------------------------------------------------------------------+
//| PRIM v 1.00.mq4 |
//| Copyright 2019, PRIM Corp. |
//| https://www.prim.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, PRIM Corp."
#property link "https://www.prim.com"
#property version "1.00"
#property strict
extern double Lot = 0.1;
extern double K_Lot1 = 0.5;
extern double K_Lot2 = 0.2;
extern double K_Lot3 = 0.1;
extern int TakeProfit_1 = 3;
extern int TakeProfit_2 = 4;
extern int TakeProfit_3 = 5;
extern int TakeProfit_4 = 7;
extern int Step1 = 2;
extern int Step2 = 4;
extern int Step3 = 6;
extern int Step4 = 8;
extern int MaxDopKolen1 = 3;
extern int MaxDopKolen2 = 5;
extern int MaxDopKolen3 = 7;
extern int Magic = 1111111;
extern int MAPeriod = 20;
int ticket;
double lot, tp, price, lastlot;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
TakeProfit_1 *= 10;
TakeProfit_2 *= 10;
TakeProfit_3 *= 10;
TakeProfit_4 *= 10;
Step1 *= 10;
Step2 *= 10;
Step3 *= 10;
Step4 *= 10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double ic = iClose(Symbol(), PERIOD_CURRENT, 1);
double io = iOpen(Symbol(), PERIOD_CURRENT, 1);
double ih = iHigh(Symbol(), PERIOD_CURRENT, 1);
double il = iLow(Symbol(), PERIOD_CURRENT, 1);
double iM = iMA(Symbol(),PERIOD_CURRENT, MAPeriod,0, MODE_SMA, PRICE_CLOSE, 1);
if(CountTrades()==0)
{
if(Ask<=iM)
{
tp = NormalizeDouble(Ask + TakeProfit_1*Point, Digits);
ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, 5, 0, tp, "", Magic, 0, Blue);
SendNotification("Милорд, мы открыли сделку на покупку: " + Symbol());
}
if(Bid>=iM)
{
tp = NormalizeDouble(Bid - TakeProfit_1*Point, Digits);
ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, 5, 0, tp, "", Magic, 0, Red);
SendNotification("Милорд, мы открыли сделку на продажу: " + Symbol());
}
}
if (CountTrades()>0)
{
if(CountTrades()<= MaxDopKolen1)
{
if(BuyCount()>0 && SellCount()==0 && BuyCount()<=MaxDopKolen1)
{
price = FindLastOrderPrice(OP_BUY);
if (Ask <= NormalizeDouble(price - Step1*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot1, Digits);
tp = NormalizeDouble(Ask + TakeProfit_1*Point, Digits);
ticket=OrderSend(Symbol(), OP_BUY, lastlot, Ask, 5, 0,tp, "", 0, 0, Blue);
SendNotification("Мы увеличили сделку на покупку: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на покупку");
}
}
if (BuyCount()==0 && SellCount()>0 && SellCount()<=MaxDopKolen1)
{
price = FindLastOrderPrice(OP_SELL);
if (Bid >= NormalizeDouble(price + Step1*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot1, Digits);
tp = NormalizeDouble(Bid - TakeProfit_1*Point, Digits);
ticket=OrderSend(Symbol(), OP_SELL, lastlot, Bid, 5, 0,tp, "", 0, 0, Red);
SendNotification("Мы увеличили сделку на продажу: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на продажу");
}
}
}
if (CountTrades()>MaxDopKolen1 && CountTrades()<= MaxDopKolen2)
{
if(SellCount()==0 && BuyCount()>MaxDopKolen1 && BuyCount()<=MaxDopKolen2)
{
price = FindLastOrderPrice(OP_BUY);
if (Ask <= NormalizeDouble(price - Step2*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot2, Digits);
tp = NormalizeDouble(Ask + TakeProfit_2*Point, Digits);
ticket=OrderSend(Symbol(), OP_BUY, lastlot, Ask, 5, 0,tp, "", 0, 0, Blue);
SendNotification("Мы увеличили сделку на покупку: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на покупку");
}
}
if (BuyCount()==0 && SellCount()>MaxDopKolen1 && SellCount()<=MaxDopKolen2)
{
price = FindLastOrderPrice(OP_SELL);
if (Bid >= NormalizeDouble(price + Step2*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot2, Digits);
tp = NormalizeDouble(Bid - TakeProfit_2*Point, Digits);
ticket=OrderSend(Symbol(), OP_SELL, lastlot, Bid, 5, 0,tp, "", 0, 0, Red);
SendNotification("Мы увеличили сделку на продажу: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на продажу");
}
}
}
if (CountTrades()>MaxDopKolen2 && CountTrades()<= MaxDopKolen3)
{
if(SellCount()==0 && BuyCount()>MaxDopKolen2 && BuyCount()<=MaxDopKolen3)
{
price = FindLastOrderPrice(OP_BUY);
if (Ask <= NormalizeDouble(price - Step3*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot3, Digits);
tp = NormalizeDouble(Ask + TakeProfit_3*Point, Digits);
ticket=OrderSend(Symbol(), OP_BUY, lastlot, Ask, 5, 0,tp, "", 0, 0, Blue);
SendNotification("Мы увеличили сделку на покупку: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на покупку");
}
}
if (BuyCount()==0 && SellCount()>MaxDopKolen2 && SellCount()<=MaxDopKolen3)
{
price = FindLastOrderPrice(OP_SELL);
if (Bid >= NormalizeDouble(price + Step3*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot3, Digits);
tp = NormalizeDouble(Bid - TakeProfit_3*Point, Digits);
ticket=OrderSend(Symbol(), OP_SELL, lastlot, Bid, 5, 0,tp, "", 0, 0, Red);
SendNotification("Мы увеличили сделку на продажу: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на продажу");
}
}
}
if (CountTrades()>MaxDopKolen3)
{
if(SellCount()==0 && BuyCount()>MaxDopKolen3)
{
price = FindLastOrderPrice(OP_BUY);
if (Ask <= NormalizeDouble(price - Step4*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot3, Digits);
tp = NormalizeDouble(Ask + TakeProfit_4*Point, Digits);
ticket=OrderSend(Symbol(), OP_BUY, lastlot, Ask, 5, 0,tp, "", 0, 0, Blue);
SendNotification("Мы увеличили сделку на покупку: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на покупку");
}
}
if (BuyCount()==0 && SellCount()>MaxDopKolen3)
{
price = FindLastOrderPrice(OP_SELL);
if (Bid >= NormalizeDouble(price + Step4*Point, Digits))
{
lastlot = NormalizeDouble(Lot*K_Lot3, Digits);
tp = NormalizeDouble(Bid - TakeProfit_4*Point, Digits);
ticket=OrderSend(Symbol(), OP_SELL, lastlot, Bid, 5, 0,tp, "", 0, 0, Red);
SendNotification("Мы увеличили сделку на продажу: " + Symbol());
if (ticket<1)
Print("Ошибка открытия ордера на продажу");
}
}
}
}
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int BuyCount()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true &&
OrderSymbol() == Symbol() &&
OrderMagicNumber()==Magic &&
OrderType()==OP_BUY)
{
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int SellCount()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true &&
OrderSymbol() == Symbol() &&
OrderMagicNumber()==Magic &&
OrderType()==OP_SELL)
{
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
double FindLastOrderPrice(int otype)
{
int oldticket;
double oldopenprice=0;
ticket=0;
for (int cnt=OrdersTotal()-1; cnt >=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderType() == otype)
{
oldticket = OrderTicket();
if (oldticket > ticket)
{
ticket=oldticket;
oldopenprice=OrderOpenPrice();
}
}
}
}
return(oldopenprice);
}
//+------------------------------------------------------------------+
Изменено 15 сентября, 2019 пользователем Oleg Petrov
@Oleg Petrov После открытия сделки где у Вас SendNotification , вставьте Print("Buy=",BuyCount(),", Sell=",SellCount() );
После сделаете короткий прогон на пару сеток и смотрите в журнале как логика отработала. Этот приём основной при поиске ошибок.
1 час назад, 0ll сказал:@Oleg Petrov После открытия сделки где у Вас SendNotification , вставьте Print("Buy=",BuyCount(),", Sell=",SellCount() );
После сделаете короткий прогон на пару сеток и смотрите в журнале как логика отработала. Этот приём основной при поиске ошибок.
Oll спасибо за подсказку. Добавил Print по вашей рекомендации. В журнале после каждой дополнительно открытой сделки появляются следующие строки:
2019.09.16 14:37:20.013 2019.08.05 09:14:26 prim EURUSD,M1: Buy=0, Sell=1, Count=1
2019.09.16 14:37:15.514 2019.08.05 09:12:14 prim EURUSD,M1: Buy=0, Sell=1, Count=1
То есть получается все мои функции Count() работают некорректно, не суммируют открытые сделки.
Подскажите плиз что не так в моем коде Count. Цикл вроде стандартный, перебирает все открытые ордера от начала до 0. Почему не суммирует их?
int CountTrades()
{
int count=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
}
return(count);
}
10 минут назад, Oleg Petrov сказал:Подскажите плиз что не так в моем коде Count. Цикл вроде стандартный, перебирает все открытые ордера от начала до 0.
Получается не только Count но и SellCount() у Вас не считает...
Думаю для Вас будет полезно самому найти ошибку, Print в руки и вперёд, вставляйте везде, только не в основной цикл, а то заспамите журнал.
21 минуту назад, 0ll сказал:Получается не только Count но и SellCount() у Вас не считает...
Думаю для Вас будет полезно самому найти ошибку, Print в руки и вперёд, вставляйте везде, только не в основной цикл, а то заспамите журнал.
Вы имеете ввиду использовать функцию Print во всех строках функции Count ? Так там же смысловая строка только цикл и есть. А выводимый результат явно не корректен судя по журналу. Не совсем понял какие выходные параметры в советнике мне нужно проверить с помощью Print для поиска ошибки.
18 часов назад, Oleg Petrov сказал:Подскажите плиз в чем ошибка
разобрался?
1 минуту назад, Oleg Petrov сказал:Добрый день!
Нет. Понял что проблема в функциях Count, BuyCount, SellCount но не пойму в чем там ошибка. OrdersTotal добавил в Print. Он правильно тянется. Цикл вроде правильно написан, анализирует по убыванию все открытые ордера.
В общем запутался еще больше.
1 минуту назад, Oleg Petrov сказал:Понял что проблема в функциях Count, BuyCount, SellCount но не пойму в чем там ошибка.
Это как красивая девушка на сцене отвлекает от происходящего с иллюзионистом или фокусником.
1 минуту назад, Oleg Petrov сказал:добавил в Print
Для этого существует отладка, не стоит пренебрегать её.
Ответ:
Все гораздо проще! Дело в MagicNumber в OrderSend(). В первом ордере ставите MagicNumber-1111111, а в последующих ордерах 0. Отсюда следует что Count, BuyCount, SellCount считают MagicNumber-1111111, вот поэтому Count, BuyCount, SellCount и будут видеть (считать) только по одному ордеру.
34 минуты назад, MikR0ReR сказал:Ответ:
Все гораздо проще! Дело в MagicNumber в OrderSend(). В первом ордере ставите MagicNumber-1111111, а в последующих ордерах 0. Отсюда следует что Count, BuyCount, SellCount считают MagicNumber-1111111, вот поэтому Count, BuyCount, SellCount и будут видеть (считать) только по одному ордеру.
Вот спасибо. А то я уж и не знал что еще проверить в Count. Оказалось, что проблема в том, что часть кода скопировал из другого своего советника, где Magic не контролировался. И конечно раз этот нюанс на общую логику советника не влиял, я его и не проверил.
Изменено 16 сентября, 2019 пользователем Oleg Petrov
Здравствуйте!!! Нашёл интересный код трейлинг стоп. Помогите пожалуйста Tral_ForexGrail_v2.3 вписать в 15AO. Заранее спасибо !!!
Хочу сделать чтобы советник выдавал алерты и отправлял сообщения на телефон, но при соблюдении условий начинает постоянно отправлять сообщения и выдавать алерты, подскажите как сделать чтобы это происходило 1 раз
if (StopBuy < 10000 && Stochastic < 20)
{
if (AlertOn==True)
{
Alert(Symbol()," сигнал на покупку");
if (PushMessagesOn==True)
{
SendNotification(_Symbol + " сигнал на покупку ");
Print ("Алерт на мобильник покупка", Stochastic);
}
}
}
if (StopSell < 10000 && Stochastic > 80)
{
if (AlertOn==True)
{
Alert(Symbol()," сигнал на продажу");
if (PushMessagesOn==True)
{
SendNotification(_Symbol + " сигнал на продажу");
Print ("Алерт на мобильник продажа", Stochastic);
}
}
}
Изменено 19 сентября, 2019 пользователем 0ll
@Partorius введите флаг напр: bool one = true; , Затем в тексте добавьте проверки и сброс флага:
if (one && StopBuy < 10000 && Stochastic < 20)
{ one = false; и далее по тексту }
else one = true; // когда нет сигнала - восстанавливаем флаг
Также и с другим условием. Надеюсь сигнал Stochastic не с 0-бара? Можно задать время таймаута, когда сигнал не отправляется.
bool one = true;
if (one && StopBuy < 10000 && Stochastic < 20)
{
one = false;
if (AlertOn==True)
{
Alert(Symbol()," сигнал на покупку");
if (PushMessagesOn==True)
{
SendNotification(_Symbol + " сигнал на покупку");
Print ("Алерт на мобильник покупка", Stochastic);
}
}
} else one = true;
if (one && StopSell < 10000 && Stochastic > 80)
{
one = false;
if (AlertOn==True)
{
Alert(Symbol()," сигнал на продажу");
if (PushMessagesOn==True)
{
SendNotification(_Symbol + " сигнал на продажу");
Print ("Алерт на мобильник продажа", Stochastic);
}
}
} else one = true;
Почему то все равно постоянно шлет сообщения
4 часа назад, Partorius сказал:Почему то все равно постоянно шлет сообщения
bool one = true;
нужно объявить на глобальном уровне перед void OnTick()
или добавить static bool one = true;
1 час назад, 0ll сказал:bool one = true;нужно объявить на глобальном уровне перед void OnTick()
или добавить static bool one = true;
Пробовал и на глобальном уровне
//+------------------------------------------------------------------+
//| Alert.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern bool AlertOn = True; //Алерт
extern bool PushMessagesOn = False;// Отправка сигнала на мобильник
bool one = true;
и добавлял
static bool one = true;
все равно постоянно шлет сообщения
@Partorius Стохастик с какого бара? и на каком ТФ всё это запускается? Никто весь Ваш код не видит, поэтому сказать не возможно.
Вам понятна суть моего предложения? или надо подробнее описать?
5 минут назад, 0ll сказал:@Partorius Стохастик с какого бара? и на каком ТФ всё это запускается? Никто весь Ваш код не видит, поэтому сказать не возможно.
Вам понятна суть моего предложения? или надо подробнее описать?
Стохастик с предыдущего бара, тайм фрейм 1 час, в коде в принципе больше ничего нет, кроме вытягивания данных с индикатора Stochastic и BuyStop и SellStop.
Если можно то поподробнее распишите, мне кажется что в таком исполнении как сейчас на каждом тике будут обновляться данные в том числе и переменная one будет всегда true т.к мы ей в конце цикла присваиваем true
20 минут назад, 0ll сказал:@Partorius Стохастик с какого бара? и на каком ТФ всё это запускается? Никто весь Ваш код не видит, поэтому сказать не возможно.
Вам понятна суть моего предложения? или надо подробнее описать?
Вот код целиком
//+------------------------------------------------------------------+
//| Alert.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern bool AlertOn = True; //Алерт
extern bool PushMessagesOn = False;// Отправка сигнала на мобильник
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
static bool one = true;
double Stochastic = iCustom (Symbol(), 0, "Drake Delay Stochastic", 5, 3, 1, 0, 1);
double StopBuy = iCustom (Symbol(), 0, "BB_Stop_v1", 80, 2, 1, 1, 1, 1000, true, 4, 1);
double StopSell = iCustom (Symbol(), 0, "BB_Stop_v1", 80, 2, 1, 1, 1, 1000, true, 5, 1);
{
if (one && StopBuy < 10000 && Stochastic < 20)
{
one = false;
if (AlertOn==True)
{
Alert(Symbol()," сигнал на покупку ");
if (PushMessagesOn==True)
{
SendNotification(_Symbol + " сигнал на покупку");
Print ("Алерт на мобильник покупка", Stochastic);
}
}
} else one = true;
if (one && StopSell < 10000 && Stochastic > 80)
{
one = false;
if (AlertOn==True)
{
Alert(Symbol()," сигнал на продажу");
if (PushMessagesOn==True)
{
SendNotification(_Symbol + " сигнал на продажу");
Print ("Алерт на мобильник продажа", Stochastic);
}
}
} else one = true;
}
}
//+------------------------------------------------------------------+
Здравствуйте!
Я не то чтобы умею в mql4, но
копипастить могу.
Сделал функцию:
//+---------------------------------------------------------------------------------+ //|Функция для определения тренда (общая) | //+---------------------------------------------------------------------------------+ int Trend(Filtr filtr_, ENUM_TIMEFRAMES tf, int shift) { int res=0; if(filtr_==no) { if(Ask<lowerEnv2()) { res=1; } if(Bid>upperEnv2()) { res=0; } } if(filtr_==Pik) { if(iLow(NULL,tf,shift)<=iLowest(NULL,tf,MODE_LOW,period_env2,shift)) { res=1; } if(iHigh(NULL,tf,shift)>=iHighest(NULL,tf,MODE_HIGH,period_env2,shift)) { res=0; } } if(filtr_==full_color) { if (iClose(NULL,tf,shift)>iOpen(NULL,tf,shift)&&ha(tf,3,shift)>=ha(tf,2,shift))//белая { res=1; } if (iClose(NULL,tf,shift)<=iOpen(NULL,tf,shift)&&ha(tf,3,shift)<ha(tf,2,shift))//черная { res=0; } } if(filtr_==HA) { if (ha(tf,3,shift)>=ha(tf,2,shift))//белая { res=1; } if (ha(tf,3,shift)<ha(tf,2,shift))//черная { res=0; } } if(filtr_==JC) { if (iClose(NULL,tf,shift)>iOpen(NULL,tf,shift))//белая { res=1; } if (iClose(NULL,tf,shift)<=iOpen(NULL,tf,shift))//черная { res=0; } } return res; }
Работает так как и задумывал, кроме участка:
if(filtr_==full_color)
{
if (iClose(NULL,tf,shift)>iOpen(NULL,tf,shift)&&ha(tf,3,shift)>=ha(tf,2,shift))//белая
{
res=1;
}
if (iClose(NULL,tf,shift)<=iOpen(NULL,tf,shift)&&ha(tf,3,shift)<ha(tf,2,shift))//черная
{
res=0;
}
}
Поясню.
Функция возвращает 0 - тренд вниз, 1 - вверх на основании японской свечи или Heiken.
НО!!!! Когда пытаюсь "скрестить" и японскую свечу И Heiken функция в теле советника работает так как-будто видит только
японскую свечу.
Прошу ПОМОЩИ, если кто может, подсказать в чем здесь секрет. Корректно ли написана функция?
Заранее, СПАСИБО!!!
Изменено 20 сентября, 2019 пользователем 0ll
8 часов назад, Владимир Стариков сказал:Корректно ли написана функция?
код ha покажите....
Изменено 20 сентября, 2019 пользователем usver73
13 минут назад, usver73 сказал:код ha покажите....
Пожалуйста!)
double ha(int HA_tf,int mode,int shift)
{
double buff=iCustom(NULL,HA_tf,"Heiken Ashi",mode,shift);
return buff;
}
13 минут назад, Владимир Стариков сказал:Пожалуйста!)
х.з., может я неправ, но в параметрах индикатора в моем тереме четыре входных параметра, а в Вашем вызове их нет...
Возможно, дефолтные настройки в iCustom можно опускать... я не пробовал...
1 минуту назад, usver73 сказал:Возможно, дефолтные настройки в iCustom можно опускать... я не пробовал...
Я пробовал - без проблем.
ну тогда дебагер- Print ^)
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем