Доработка индикаторов: общая тема📌
От loreno, 17 августа, 2011 в Уголок Программиста
vrank пробуй.
Спасибо огромное, сейчас работает как надо!
Можете ли добавить параллельно с алертом отправку push уведомлений (достатоно наименовании пары в сообщении)?
Пробуй.Можете ли добавить параллельно с алертом отправку push уведомлений
Пробуй.Можете ли добавить параллельно с алертом отправку push уведомлений
Привет, все работает как надо, очень благодарен
Добавлено: 25-02-2019 06:12:59
Пробуй.Можете ли добавить параллельно с алертом отправку push уведомлений
В ходе тестов понял что Push - уведомления, не то пальто... если 3 сигнала подряд, индюк уведомления не отправляет (вернее 1 из 3х, остальное блокирует).
Пробобовал тупо в коде поменять Sendnotification на Sendmail , чтобы отправка шла на почту, но при компилировании дает ошибку...
В программировании нуб, хотелось бы заменить Отправку PUSH на отправку MAIL(в тексте сообщения так же достаточно только название инструмента)
Прошу еще раз прощения за беспокойство) это крайний раз)
Изменено 25 февраля, 2019 пользователем vrank
Пробуй с мылом
Пробуй с мылом
работает, как часы ;)
Я создал индикатор, который рисует прямоугольники.
EA перехватывает последние 2 прямоугольники.
После закрытия 1 или 2 позиций, советник перестает корректно захватывать прямоугольники. Индикатор также начинает работать неправильно...
Ошибок нет в журнале...
Если я не открываю позиции, советник и индикатор работает правильно !!!
Я программирую в течение 5 лет и это в первый раз происходит.
Я понятия не имею, где возникает проблем.
Если у вас есть опыт с такой проблем, был бы рад помочь мне.
Спасибо !!! :(
Это код советника:
void F4ZZR_Check()
{
for(int i_F4Z_1=ObjectsTotal(0,0,OBJ_RECTANGLE); i_F4Z_1>=0 && !IsStopped(); i_F4Z_1--)
{
string ObjName_F4Z_1=ObjectName(i_F4Z_1);
if(StringSubstr(ObjName_F4Z_1,0,L_3_F4Z_EA)==Id_Name_F4Z_EA_B || StringSubstr(ObjName_F4Z_1,0,L_4_F4Z_EA)==Id_Name_F4Z_EA_S)
{
datetime ObjTime2_F4Z_1=(datetime)ObjectGet(ObjName_F4Z_1,OBJPROP_TIME2); //EndTime
int Obj_N_bars_F4Z_1=iBarShift(Symb,F4ZZ_Show_TF,ObjTime2_F4Z_1); //MTF candles from EndTime
if(Obj_N_bars_F4Z_1==4) //If EndTime of Rectangle 1 = 4 bar
{
if(F4ZZR_1_ObjName!=ObjName_F4Z_1) //If New Object
{
F4ZZR_1_ObjName=ObjName_F4Z_1; //Name for Object 1 (Actual)
for(int r=Bars-7; r>=5 && !IsStopped(); r--) //Find new Object 2 - start from bar 5
{
for(int i_F4Z_2=ObjectsTotal(0,0,OBJ_RECTANGLE); i_F4Z_2>=0 && !IsStopped(); i_F4Z_2--)
{
string ObjName_F4Z_2=ObjectName(i_F4Z_2);
if(StringSubstr(ObjName_F4Z_2,0,L_3_F4Z_EA)==Id_Name_F4Z_EA_B || StringSubstr(ObjName_F4Z_2,0,L_4_F4Z_EA)==Id_Name_F4Z_EA_S)
{
datetime ObjTime2_F4Z_2=(datetime)ObjectGet(ObjName_F4Z_2,OBJPROP_TIME2); //EndTime
int Obj_N_bars_F4Z_2=iBarShift(Symb,F4ZZ_Show_TF,ObjTime2_F4Z_2); //MTF candles from EndTime
if(Obj_N_bars_F4Z_2==r) //If EndTime of Rectangle 2 = "r" bar
{
F4ZZR_2_ObjName=ObjName_F4Z_2; //Name for Object 2 (Previw)
break;
}
}
else continue;
}
}
break;
}
else break;
}
}
else continue;
}
Obj_Line_Stile_1_Act=(int)ObjectGet(F4ZZR_1_ObjName,OBJPROP_STYLE); // Dashed line is closed Object 1 (Actual)
Obj_Line_Stile_2_Pre=(int)ObjectGet(F4ZZR_2_ObjName,OBJPROP_STYLE); // Dashed line is closed Object 2 (Preview)
if(StringSubstr(F4ZZR_1_ObjName,0,L_4_F4Z_EA)==Id_Name_F4Z_EA_S) //For Object 1 (Actual) if "Sell"
{
if(Obj_Line_Stile_1_Act!=0) //If Object 1 (Actual) is Dashed line
{
F4ZZR_1_Sig_Act="Buy"; // Signal "Buy" for Object 1 (Actual)
}
else F4ZZR_1_Sig_Act="Sell"; // Signal "Sell" for Object 1 (Actual)
}
if(StringSubstr(F4ZZR_1_ObjName,0,L_3_F4Z_EA)==Id_Name_F4Z_EA_B) //For Object 1 (Actual) if "Buy"
{
if(Obj_Line_Stile_1_Act!=0) //If Object 1 (Actual) is Dashed line
{
F4ZZR_1_Sig_Act="Sell"; // Signal "Sell" for Object 1 (Actual)
}
else F4ZZR_1_Sig_Act="Buy"; // Signal "Buy" for Object 1 (Actual)
}
if(StringSubstr(F4ZZR_2_ObjName,0,L_4_F4Z_EA)==Id_Name_F4Z_EA_S) //For Object 2 (Preview) if "Sell"
{
if(Obj_Line_Stile_2_Pre!=0) //If Object 2 (Preview) is Dashed line
{
F4ZZR_2_Sig_Pre="Buy"; // Signal "Buy" for Object 2 (Preview)
}
else F4ZZR_2_Sig_Pre="Sell"; // Signal "Sell" for Object 2 (Preview)
}
if(StringSubstr(F4ZZR_2_ObjName,0,L_3_F4Z_EA)==Id_Name_F4Z_EA_B) ////For Object 2 (Preview) if "Buy"
{
if(Obj_Line_Stile_2_Pre!=0) //If Object 2 (Preview) is Dashed line
{
F4ZZR_2_Sig_Pre="Sell"; // Signal "Sell" for Object 2 (Preview)
}
else F4ZZR_2_Sig_Pre="Buy"; // Signal "Buy" for Object 2 (Preview)
}
if((F4ZZR_1_Sig_Act=="Sell" && F4ZZR_2_Sig_Pre=="Sell") || (F4ZZR_1_Sig_Act=="Buy" && F4ZZR_2_Sig_Pre=="Buy"))
{
if(F4ZZR_1_Sig_Act=="Sell" && F4ZZR_2_Sig_Pre=="Sell")
{
F4ZZR_Pr_1_Act=ObjectGet(F4ZZR_1_ObjName,OBJPROP_PRICE1);
F4ZZR_Pr_2_Act=ObjectGet(F4ZZR_1_ObjName,OBJPROP_PRICE2);
if(Obj_Line_Stile_1_Act==0) F4ZZR_SL_Pr_1_Act=NormalizeDouble(F4ZZR_Pr_1_Act+(F4ZZR_SL*Point),Digits); //For Sell 1
else F4ZZR_SL_Pr_1_Act=NormalizeDouble(F4ZZR_Pr_2_Act+(F4ZZR_SL*Point),Digits); //For Sell 1
F4ZZR_Pr_1_Pre=ObjectGet(F4ZZR_2_ObjName,OBJPROP_PRICE1);
F4ZZR_Pr_2_Pre=ObjectGet(F4ZZR_2_ObjName,OBJPROP_PRICE2);
if(Obj_Line_Stile_2_Pre==0) F4ZZR_SL_Pr_1_Pre=NormalizeDouble(F4ZZR_Pr_1_Pre+(F4ZZR_SL*Point),Digits); //For Sell 2
else F4ZZR_SL_Pr_1_Pre=NormalizeDouble(F4ZZR_Pr_2_Pre+(F4ZZR_SL*Point),Digits); //For Sell 2
}
if(F4ZZR_1_Sig_Act=="Buy" && F4ZZR_2_Sig_Pre=="Buy")
{
F4ZZR_Pr_1_Act=ObjectGet(F4ZZR_1_ObjName,OBJPROP_PRICE1);
F4ZZR_Pr_2_Act=ObjectGet(F4ZZR_1_ObjName,OBJPROP_PRICE2);
if(Obj_Line_Stile_1_Act==0) F4ZZR_SL_Pr_1_Act=NormalizeDouble(F4ZZR_Pr_1_Act-(F4ZZR_SL*Point),Digits); //For Buy 1
else F4ZZR_SL_Pr_1_Act=NormalizeDouble(F4ZZR_Pr_2_Act-(F4ZZR_SL*Point),Digits); //For Buy 1
F4ZZR_Pr_1_Pre=ObjectGet(F4ZZR_2_ObjName,OBJPROP_PRICE1);
F4ZZR_Pr_2_Pre=ObjectGet(F4ZZR_2_ObjName,OBJPROP_PRICE2);
if(Obj_Line_Stile_2_Pre==0) F4ZZR_SL_Pr_1_Pre=NormalizeDouble(F4ZZR_Pr_1_Pre-(F4ZZR_SL*Point),Digits); //For Buy 2
else F4ZZR_SL_Pr_1_Pre=NormalizeDouble(F4ZZR_Pr_2_Pre-(F4ZZR_SL*Point),Digits); //For Buy 2
}
}
else
{
F4ZZR_Pr_1_Act=0.0;
F4ZZR_Pr_2_Act=0.0;
F4ZZR_SL_Pr_1_Act=0.0;
F4ZZR_Pr_1_Pre=0.0;
F4ZZR_Pr_2_Pre=0.0;
F4ZZR_SL_Pr_1_Pre=0.0;
}
}
И экраны:
Изменено 8 марта, 2019 пользователем SStanly
советник вызывает индикатор или только ищет объекты на графике?
прямоугольники рассчитываются независимо или между ними есть связь?
ордера открываются на каждом объекте или есть ещё условия и ордер может не открыться?
ObjectName(0,i_F4Z1_1,0,OBJ_RECTANGLE), а не то, что у Вас в 5-ой строке, должно быть.
Дальше не стал смотреть.
Здравствуйте,
1. Советник только ищет объекты на графике.
2. Прямоугольники рассчитываются независимо.
3. Нет проблем с открытия ордера.
Проблема возникает после открытия / закрытия 2-3 ордера. Не на первой сделке!!!
При запуске все нормально - я установливаю индикатор и советник. Советник открывает и закрывает несколько позиций и затем начинает регистрировать только прямоугольники для покупки ("Buy" - синие прямоугольники).
Я это показал на последние два экрана.
Сначала думал, что какой-то цикл в советнике не заканчивается, но я их все проверил...
Я переписал код индикатора несколько раз... проблем остается...
Переписал код советнике для поиска прямоугольники под разными логики... проблем остается...
Я просто не могу увидеть связь между открытие и закрытие ордеров и нарушение функции подсчета последние два прямоугольника (код функции, который я дал).
Добавлено: 08-03-2019 22:57:38
StringSubstr
StringSubstr(ObjName_F4Z_1, 0, L_3_F4Z_EA)
StringSubstr - Извлекает подстроку из текстовой строки, начинающейся c указанной позиции.
L_3_F4Z_EA - указавает позиции.
Добавлено: 08-03-2019 23:29:43
Это часть кода советнике для открытия ордера:
if(F4ZZR_Pr_2_Pre>F4ZZR_Pr_2_Act)
{
if(F4ZZR_Pr_1_Act>=F4ZZR_Pr_2_Pre)
{
Lots=Lots_Next; //0.02 lots
SL_for_Mod_New=NormalizeDouble(F4ZZR_SL_Pr_1_Pre,Digits);
if(Ask>=F4ZZR_Pr_2_Act)
{
CountOrders();
if(CountOrdersSell==0 && CountOrdersSellLimit==0)
{
if(CountOrdersBuy!=0) Close_Orders(OP_BUY);
Open_Orders(OP_SELL,0,SL_for_Mod_New,EmExit_for_Mod);
}
if(NormalizeDouble((F4ZZR_Pr_2_Pre-PenDirection_for_Mod)-Bid,Digits)>=NormalizeDouble(F4ZZR_SL*Point,Digits))
{
CountOrders();
if(CountOrdersSell==1 && CountOrdersSellLimit==0)
{
PenDirection_for_Mod_New=NormalizeDouble((F4ZZR_Pr_2_Pre-PenDirection_for_Mod)-Bid,Digits);
Open_Orders(OP_SELLLIMIT,PenDirection_for_Mod_New,SL_for_Mod_New,EmExit_for_Mod);
}
}
}
else if(F4ZZR_Pr_2_Act>Ask)
{
if(NormalizeDouble((F4ZZR_Pr_2_Act-PenDirection_for_Mod)-Bid,Digits)>NormalizeDouble(F4ZZR_SL*Point,Digits))
{
CountOrders();
if(CountOrdersSell==0 && CountOrdersSellLimit==0)
{
PenDirection_for_Mod_New=NormalizeDouble((F4ZZR_Pr_2_Act-PenDirection_for_Mod)-Bid,Digits);
Open_Orders(OP_SELLLIMIT,PenDirection_for_Mod_New,SL_for_Mod_New,EmExit_for_Mod);
}
}
if(NormalizeDouble((F4ZZR_Pr_2_Pre-PenDirection_for_Mod)-Bid,Digits)>NormalizeDouble(F4ZZR_SL*Point,Digits))
{
CountOrders();
if(CountOrdersSell==0 && CountOrdersSellLimit==1)
{
PenDirection_for_Mod_New=NormalizeDouble((F4ZZR_Pr_2_Pre-PenDirection_for_Mod)-Bid,Digits);
Open_Orders(OP_SELLLIMIT,PenDirection_for_Mod_New,SL_for_Mod_New,EmExit_for_Mod);
}
}
}
} и код функции для открытия ордеров:
void Open_Orders(int TypeOrder,double PenDirection=0.0,double SL=0.0,double EmExit=0.0)
{
OpenPrice=0; PenEx=0;
double New_PenDir=0.0,Ask_Open=0.0,Bid_Open=0.0;
double New_SL=SL,New_EmExit=EmExit;
ModSL=0.0;
string Text;
while(true && !IsStopped())
{
bool OpOdrers=false;
New_PenDir=PenDirection;
Minimal_Distance();
if(!IsTesting() && !IsOptimization())
{
int CountErrServer=0,CountMaxErrServer=10;
while(IsTradeContextBusy()==true && CountErrServer {
CountErrServer+=1;
Print("Send_Orders : IsTradeContextBusy() Errors = ",CountErrServer);
Sleep(50);
}
RefreshRates();
}
Ask_Open=Ask;
Bid_Open=Bid;
switch(TypeOrder)
{
case 0: //для ордер Buy.
{
OpenPrice=Ask_Open;
PenEx=0;
if(New_SL!=0.0)
{
if((OpenPrice-New_SL)>Min_Dist && (Bid_Open-Min_Dist)>New_SL) ModSL=New_SL;
else
{
ModSL=Bid_Open-Min_Dist-New_EmExit;
Print("BuyOrder emergency exit StopLoss at : ",DoubleToStr(ModSL,Digits));
}
}
Text="Buy";
OpOdrers=true;
break;
}
case 1: //для ордер Sell.
{
OpenPrice=Bid_Open;
PenEx=0;
if(New_SL!=0.0)
{
if((New_SL-OpenPrice)>Min_Dist && (Ask_Open+Min_Dist) else
{
ModSL=Ask_Open+Min_Dist+New_EmExit;
Print("SellOrder emergency exit StopLoss at : ",DoubleToStr(ModSL,Digits));
}
}
Text="Sell";
OpOdrers=true;
break;
}
case 2: //для ордер BuyLimit.
{
OpenPrice=Ask_Open-New_PenDir;
if(Ask_Open-OpenPrice {
OpenPrice-=EmExit_for_Mod;
Alert(Symb+", The price for opening BuyLimit is corrected with Emergency Exit.");
if(Ask_Open-OpenPrice {
Alert(Symb+", The price for opening BuyLimit does not meet the requirements of MQL4.");
break;
}
}
if(New_SL!=0.0)
{
if((OpenPrice-New_SL)>Min_Dist) ModSL=New_SL;
else
{
ModSL=Bid_Open-Min_Dist-New_EmExit;
Print("BuyOrder emergency exit StopLoss at : ",DoubleToStr(ModSL,Digits));
}
}
PenEx=(Pending_Expiration==0) ? 0 :(TimeCurrent()+60*Pending_Expiration);
Text="BuyLimit";
OpOdrers=true;
break;
}
case 3: //для ордер SellLimit.
{
OpenPrice=Bid_Open+New_PenDir;
if(OpenPrice-Bid_Open {
OpenPrice+=EmExit_for_Mod;
Alert(Symb+", The price for opening SellLimit is corrected with Emergency Exit.");
if(OpenPrice-Bid_Open {
Alert(Symb+", The price for opening SellLimit does not meet the requirements of MQL4.");
break; //Изход от цикъла "switch".
}
}
if(New_SL!=0.0)
{
if((New_SL-OpenPrice)>Min_Dist) ModSL=New_SL;
else
{
ModSL=Ask_Open+Min_Dist+New_EmExit;
Print("SellOrder emergency exit StopLoss at : ",DoubleToStr(ModSL,Digits));
}
}
PenEx=(Pending_Expiration==0) ? 0 :(TimeCurrent()+60*Pending_Expiration);
Text="SellLimit";
OpOdrers=true;
break;
}
case 4: //для ордерр BuyStop.
{
OpenPrice=Ask_Open+New_PenDir;
if(OpenPrice-Ask_Open {
OpenPrice+=EmExit_for_Mod;
Alert(Symb+", The price for opening BuyStop is corrected with Emergency Exit.");
if(OpenPrice-Ask_Open {
Alert(Symb+", The price for opening BuyStop does not meet the requirements of MQL4.");
break; //Изход от цикъла "switch".
}
}
if(New_SL!=0.0)
{
if((OpenPrice-New_SL)>Min_Dist) ModSL=New_SL;
else
{
ModSL=Bid_Open-Min_Dist-New_EmExit;
Print("BuyOrder emergency exit StopLoss at : ",DoubleToStr(ModSL,Digits));
}
}
PenEx=(Pending_Expiration==0) ? 0 :(TimeCurrent()+60*Pending_Expiration);
Text="BuyStop";
OpOdrers=true;
break;
}
case 5: //для ордер SellStop.
{
OpenPrice=Bid_Open-New_PenDir;
if(Bid_Open-OpenPrice {
OpenPrice-=EmExit_for_Mod;
Alert(Symb+", The price for opening SellStop is corrected with Emergency Exit.");
if(Bid_Open-OpenPrice {
Alert(Symb+", The price for opening SellStop does not meet the requirements of MQL4.");
break; //Изход от цикъла "switch".
}
}
if(New_SL!=0.0)
{
if((New_SL-OpenPrice)>Min_Dist) ModSL=New_SL;
else
{
ModSL=Ask_Open+Min_Dist+New_EmExit;
Print("SellOrder emergency exit StopLoss at : ",DoubleToStr(ModSL,Digits));
}
}
PenEx=(Pending_Expiration==0) ? 0 :(TimeCurrent()+60*Pending_Expiration);
Text="SellStop";
OpOdrers=true;
break;
}
}
if(OpOdrers==false) break;
//---------------------------------------------------
if(TypeOrder==OP_BUY || TypeOrder==OP_SELL)
{
Print("The Order ",Text," request was sent to the server. Waiting for reply...");
int Ticket=OrderSend(Symb,TypeOrder,Lots,NormalizeDouble(OpenPrice,Digits),Slippage_for_Open,NormalizeDouble(ModSL,Digits),0,"My order",MagicNumber,PenEx,clrGreen);
if(Ticket>-1)
{
if(Alerts==true)
{
Alert(Symb,", Order ",Text," # ",Ticket,". Trade is Opening...");
if(Alert_Sound_for_Open!="")
{
PlaySound(Alert_Sound_for_Open);
}
}
if(ScreenShots==true)
{
string Info=Symb+"_"+(string)Ticket+"_"+"Open_"+Text+".gif";
ChartScreenShot(0,Info,1920,1080,ALIGN_RIGHT);
}
break;
}
else
{
int CheckError;
CheckError=GetLastError();
if(CheckError!=ERR_NO_ERROR)
{
if(Fun_Order_Error(GetLastError())==1) continue;
else if(Fun_Order_Error(GetLastError())==0) break;
}
}
}
else
{
Print("The Order ",Text," request was sent to the server. Waiting for reply...");
int Ticket=OrderSend(Symb,TypeOrder,Lots,NormalizeDouble(OpenPrice,Digits),Slippage_for_Open,NormalizeDouble(ModSL,Digits),0,"My order",MagicNumber,PenEx,clrGreen);
if(Ticket>-1)
{
if(Alerts==true)
{
Alert(Symb,", Order ",Text," # ",Ticket,". Trade is Opening...");
if(Alert_Sound_for_Open!="")
{
PlaySound(Alert_Sound_for_Open);
}
}
if(ScreenShots==true)
{
string Info=Symb+"_"+(string)Ticket+"_"+"Open_"+Text+".gif";
ChartScreenShot(0,Info,1920,1080,ALIGN_RIGHT);
}
break;
}
else
{
int CheckError;
CheckError=GetLastError();
if(CheckError!=ERR_NO_ERROR)
{
if(Fun_Order_Error(GetLastError())==1) continue;
else if(Fun_Order_Error(GetLastError())==0) break;
}
}
}
}
}
:)
Изменено 9 марта, 2019 пользователем SStanly
string ObjName_F4Z_1=ObjectName(i_F4Z_1); - Вы получаете имя i-го графического объекта на графике, а там, после открытия/закрытия ордеров, последними уже стрелки идут, а Вам нужен перебор только по прямоугольникам.
Добавлено: 09-03-2019 05:04:54
У Вас получается следующее. Количество итераций в цикле перебора графических объектов у Вас равно количеству прямоугольников. Запрос же имени объекта у Вас из списка всех объектов. После открыти и закрытия ордеров в списке объектов находятся стрелки, поэтому последние прямоугольники уже никогдс алгоритмом не обрабатываются. Без обид, но для 5-ти летнего опыта, странно такие баги самому не найти.
Изменено 9 марта, 2019 пользователем ZloyZam
string ObjName_F4Z_1=ObjectName(i_F4Z_1); - Вы получаете имя i-го графического объекта на графике, а там, после открытия/закрытия ордеров, последними уже стрелки идут, а Вам нужен перебор только по прямоугольникам.
Добавлено: 09-03-2019 05:04:54
У Вас получается следующее. Количество итераций в цикле перебора графических объектов у Вас равно количеству прямоугольников. Запрос же имени объекта у Вас из списка всех объектов. После открыти и закрытия ордеров в списке объектов находятся стрелки, поэтому последние прямоугольники уже никогдс алгоритмом не обрабатываются. Без обид, но для 5-ти летнего опыта, странно такие баги самому не найти.
Спасибо !!!
Никогда не поздно делать глупые ошибки ...
:d
Всем привет!
Попрошу умеющих модернизировать стандартный индикатор Volumes для мт5.
Мне нужно чтобы столбик объема окрашивался в отличный от основного цвет при условии, что он больше каждого из четырех, указанных мной в настройках.
Заранее благодарю)
Изменено 20 марта, 2019 пользователем ashpi
Доброго времени суток. Помогите пож. прикрутить алерт к индикатору
Доброго времени суток. Помогите пож. прикрутить алерт к индикатору
Приветствую.
Всем бобра! Усть один очень симпатичный индикатор, Professional Trend Indicator.ex4, его даже продают за приемлемые деньги на wereallytrade, но так и не получилось договориться его подправить для применения в автоматической торговле.
Есть сломанная версия, но опять же в формате ex4.
Так вот, насколько актуальна сейчас декомпиляция сломанной версии, абы вырезать все навороты для ручной торговли и поменять константы?
Есть ли у кого приблуда для декомпиляции, может даже за приемлемую цену?
приблуд нет, последняя умерла года 2 назад. Вырезать навороты не получится, поменять константы в принципе возможно, но нужно искать хакера и платить деньги. Подсказать не смогу.Есть ли у кого приблуда для декомпиляции, может даже за приемлемую цену?
Всем бобра! Усть один очень симпатичный индикатор, Professional Trend Indicator.ex4, его даже продают за приемлемые деньги на wereallytrade, но так и не получилось договориться его подправить для применения в автоматической торговле.
Есть сломанная версия, но опять же в формате ex4.
Так вот, насколько актуальна сейчас декомпиляция сломанной версии, абы вырезать все навороты для ручной торговли и поменять константы?
Есть ли у кого приблуда для декомпиляции, может даже за приемлемую цену?
А связаться с разработчиками, заказать им изменения, заплатить копеечку и пользоваться в свое удовольствие не пробовали? Или по "русски" халяву, дайте халяву? Хак дороже по любому выйдет.
Ув. прогеры помогите с алертом. так то он сигналит но не пишет на какой паре ... в оповещении пишет start long/Short.
Ув. прогеры помогите с алертом. так то он сигналит но не пишет на какой паре ... в оповещении пишет start long/Short.
Готово. Всего то нужно подставить валютную пару до кавычек _Symbol, чтоб получилось так Alert(_Symbol+" WPRSI: Start Long"). И добавил название индикатора.
Да команду PlaySound() совместно с Alert() бессмысленно ставить.
PlaySound() Воспроизводит звуковой файл.
Alert() Воспроизводит звуковой файл и отображает диалоговое окно, содержащее пользовательские данные.
Здравствуйте! Помогите, пожалуйста с алертом! Индикатор BetterVolume 1.4 нужен алерт на E-mail о появлении свечи раскрашенной в белый или красный цвет (завершенной свечи) и возможностью запрещать или разрешать в меню отправку по одному и другому сигналу. Тестил из подборки с сайта индикаторы. Одни трезвонят на каждую свечу о смене цвета или направления (BetterVolume 1.5 Alerts nmc), другие сигналят там где свечи не окрашивались (BetterVolume 1.4_Alert).
Здравствуйте! Помогите, пожалуйста с алертом! Индикатор BetterVolume 1.4 нужен алерт на E-mail о появлении свечи раскрашенной в белый или красный цвет (завершенной свечи) и возможностью запрещать или разрешать в меню отправку по одному и другому сигналу.
Приветствую. Готово.
Всем привет. уважаемые программисты, переделайте пожалуйста индикатор под MT5
Добрый день, уважаемые программисты сделайте пожалуйста, чтобы звуковой и визуальный сигнал в индикаторе появлялся сразу после появления сигнальной стрелки, сейчас сигнал появляется после закрытия свечи. Спасибо!!!
Привет всем!
Хочу получить сигнал в момент проставления стрелки в индикаторе BAMSBUNG-NO REPAINT, но почему-то у меня все время одно и тоже число, а стрелки проставляются.
Подскажите как мне получить данный сигнал?
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем