0ll Опубликовано 25 февраля, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 февраля, 2019 срабатывание заданного шага(TralingStep) в этой функции происходит ТОЛЬ ПОСЛЕ ПЕРВОГО ШАГА равному всегда TralingStop(линии без убытка), а уже последующие шаги совершаются равные TralingStep.Закомментируй (//) эти 2 строчки вот так:// if(Ask-OrderOpenPrice() > TralingStop *Point || OrderStopLoss()==0) // if(OrderOpenPrice()-Bid > TralingStop *Point || OrderStopLoss()==0) Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 26 февраля, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 февраля, 2019 в ней есть параметры TralingStop и TralingStep. так вот, срабатывание заданного шага(TralingStep) в этой функции происходит ТОЛЬ ПОСЛЕ ПЕРВОГО ШАГА равному всегда TralingStop(линии без убытка), а уже последующие шаги совершаются равные TralingStep.хочется получить, что бы ПЕРВЫЙ ШАГ был тоже равен TralingStep. Не тестил правда, но:void Tralling(){ double tral=TralingStop*_Point, tralStep=TralingStep*_Point; for (int i=OrdersTotal()-1;i>=0;--i) if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == _Symbol && OrderMagicNumber()== Magic && OrderType() { last_type=OrderType(); int k=last_type==OP_BUY?1:-1; double price=last_type==OP_BUY?SymbolInfoDouble(_Symbol,SYMBOL_BID):SymbolInfoDouble(_Symbol,SYMBOL_ASK); if (k*(price-OrderStopLoss())>tral+tralStep) if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(price-k*tral,_Digits), OrderTakeProfit(),0,clrRed)) Print ("Ошибка! модификации ордера на ",last_type==OP_BUY?"buy":"sell"); }} 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 26 февраля, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 февраля, 2019 ZloyZam приветствую. Мы тут двигаем mql в массы, но осторожно, чтоб не испугать, сложную логику лучше не использовать..., типа: int k=MathPow ( -1, last_type ) ; Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 26 февраля, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 февраля, 2019 int k=MathPow ( -1, last_type ) ;Сообщить модератору Нормальный такой костыль )))Добавлено: 26-02-2019 13:35:13Мы тут двигаем mql в массы, но осторожно, чтоб не испугать, сложную логику лучше не использовать..., Да ладно? С каких это пор тернарный оператор ?: сложной логикой стал? Изменено 26 февраля, 2019 пользователем ZloyZam Ссылка на сообщение Поделиться на другие сайты More sharing options...
aiden4000 Опубликовано 1 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 марта, 2019 Если не затруднит кого то из начинающих и уже умеющих программистов, зайдите в мою тему и подсобите с советником. Ну или код напишите как это делать, а я бы уже сам попробовал в советник запихать.http://tlap.com/forum/ugolok-programmista/13/napisat-sovetnik-po-indikatoru/19081/ Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 6 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 марта, 2019 Приветствую! Не могу понять как это работает! Хочу узнать разницу в пунктах. Прошу помощи!prise2=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar2),_Digits); выдает 1.3076300000000001визуально на графике показывает 1.30763prise4=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar4),_Digits); выдает 1.3076399999999999визуально на графике показывает 1.30764получаем 1.30764 - 1.30763 / _Point = 1а по факту в коде1.3076399999999999 - 1.3076300000000001 / _Point = 0,99999999998 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 7 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 марта, 2019 а по факту в коде1.3076399999999999 - 1.3076300000000001 / _Point = 0,99999999998 при сравнении вещественных чисел нужно предварительно делать их нормализацию Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 7 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 марта, 2019 при сравнении вещественных чисел нужно предварительно делать их нормализацию То есть вот так не катитprise2=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar2),_Digits);prise4=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar4),_Digits);pip=prise4-prise2/_Point;Нужно вот так?pip=NormalizeDouble(prise4,_Digits)-NormalizeDouble(prise2,_Digits)/_Point;Получилось только вот такpip=NormalizeDouble((prise4-prise2)/Point,_Digits);конечный результат нужно нормализовывать Изменено 7 марта, 2019 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 7 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 марта, 2019 То есть вот так не катитprise2=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar2),_Digits);prise4=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar4),_Digits);pip=prise4-prise2/_Point;Нужно вот так?pip=NormalizeDouble(prise4,_Digits)-NormalizeDouble(prise2,_Digits)/_Point; У Вас обе формулы одинаковый результат дадут. И без скобок оба будут неправильными...И они более логичны (при наличии скобок), нежели третий вариант, где нормализуете уже результат..ИМХО. Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 7 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 марта, 2019 при сравнении вещественных чисел нужно предварительно делать их нормализацию При сравнении двух double(float) надо сравнивать с 0.0(0.f) нормализованную разницу этих чисел. Это из основ работы с плавающей точкой. Вообще, об этом всегда надо помнить и учитывать. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 марта, 2019 ZloyZam, дай пример кода вместо:pip=NormalizeDouble(prise4,_Digits)-NormalizeDouble(prise2,_Digits)/_Point; Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 8 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 марта, 2019 ZloyZam, дай пример кода вместо:pip=NormalizeDouble(prise4,_Digits)-NormalizeDouble(prise2,_Digits)/_Point; Если вам количество пипсов надо, то:int pip=(int)MathRound((price4-price2)/_Point); 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 8 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 марта, 2019 Если вам количество пипсов надо, то:int pip=(int)MathRound((price4-price2)/_Point); Спасибо! Да Ваш вариант тоже работает.Как я писал выше нашел решение проблемы своим способом.profit=(int)NormalizeDouble((prise4-prise2)/Point,_Digits) При сравнении двух double(float) надо сравнивать с 0.0(0.f) нормализованную разницу этих чисел. Это из основ работы с плавающей точкой. Вообще, об этом всегда надо помнить и учитывать. Почитал я тут https://docs.mql4.com/ru/basis/types/double Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 марта, 2019 MikR0ReR Ваш вариант ошибочен! и может выдавать неверный ответ, по сути NormalizeDouble у Вас не работает, а работает только (int) который просто отбрасывает дробную часть и в случае 0,99999 выдаст 0! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 8 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 марта, 2019 0ll я внимаю Вашему совету!как хорошо что есть отладка.double prise4=1.3076399999999999,prise2=1.3076300000000001,q1=(prise4-prise2), ответ: 0.0000099999999998q2=(prise4-prise2)/Point, ответ: 0.9999999999843466q3=MathRound((prise4-prise2)/Point), ответ: 1.0q4=NormalizeDouble((prise4-prise2)/Point,_Digits), ответ: 1.0q5=MathRound(0.9999900000000001), ответ: 1.0q6=NormalizeDouble(0.9999900000000001,_Digits), ответ: 0.99999q7=MathRound(0.00001), ответ: 0.0q8=NormalizeDouble(0.00001,_Digits), ответ: 0.00001q9=MathRound(0.99999), ответ: 1.0q0=NormalizeDouble(0.99999,_Digits); ответ: 0.99999 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 8 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 марта, 2019 MikR0ReR Ваш вариант ошибочен! и может выдавать неверный ответ, по сути NormalizeDouble у Вас не работает, а работает только (int) который просто отбрасывает дробную часть и в случае 0,99999 выдаст 0! У них все на плюсах писано, округление - это std::round, а там через прибавление 0.5 сделано, поэтому 0.999999 не должно получитсяДобавлено: 08-03-2019 19:35:55Кроме того, при касте double к int, начиная с определенного количества 9 после запятой начинает кастится к 1, а не к 0. Изменено 8 марта, 2019 пользователем ZloyZam Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 9 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 марта, 2019 MikR0ReR не понял Вашего примера, вот что я имел в виду:double d1 = 0.99999;void OnStart(){ Alert(" ( int ) = ", ( int )NormalizeDouble( d1, _Digits ) ); Alert(" MathRound = ", (int)MathRound( d1 ) );}ZloyZam, дружище, пиши понятнее, мне 6 десяток и некоторых терминов не понимаю...Пример_округления.PNG 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 9 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 марта, 2019 0ll Спасибо! Спасибо! Я сразу проверил на отладке Вашу рекомендацию и справил код. Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 9 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 марта, 2019 ZloyZam, дружище, пиши понятнее, мне 6 десяток и некоторых терминов не понимаю... Перевожу на русский.В стандартной библиотеке Си++, round(double), реализовано через прибавление к числу 0,5, а потом отбрасывание дробной части, таким образом, неопределенность при приведении к int исключена, так как не может получится 0,99999999. А вот нормализация - это уже совсем другое, и и в стандартной библиотеке с++ я ее не нашел, то есть она, скорее всего, у них самописная и я бы не стал ручаться, что NormalizeDouble((price1-price2)/_Point,_Digits) не окажется равной 0,9999, и, как следствие, при явном приведении к int получится 0. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 13 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 марта, 2019 Уважаемые комрады, как посчитать сколько стоит лот в валюте, например при подсчете у меня лот 0.1=1$, но например у канадца меньше десятая лота стоит? Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 13 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 марта, 2019 Если кого не затрудник можете посмотреть код индикатора, в одной строке ошибка, индикатор не мой но очень бы хотелось с ним поработать Спойлер /* Generated by EX4 TO MQ4 decompile Service Website: http://www.ex4Tomq4.net E-mail : info@ex4Tomq4.net */#property copyright "Sagacity International Corp"#property link "http://www.paintbarforex.com"#property indicator_separate_window#property indicator_buffers 6#property indicator_color1 Lime#property indicator_color2 Red#property indicator_color3 Green#property indicator_color4 Brown#property indicator_color5 Lime#property indicator_color6 Red/*#import "ServerValidate.dll" void ValidateUser(string a0, string a1, int a2, int a3, int& a4[], int& a5[], string a6); double Func3(); int Func9(double a0, double a1); double Func10(double a0, double a1); int IsValidated();#import*/extern int Length = 21;/*extern string Username;extern string Password;*/string gs_kaufman3_96 = "Kaufman3";double gd_104 = 2.0;double gd_112 = 16.0;int gi_120 = 0;bool gi_124 = TRUE;double gda_128[];double gda_132[];double gda_136[];double gda_140[];double gda_144[];double gda_148[];double gda_152[];double gda_156[];double gda_160[];double gda_164[100];int gi_168 = 10;double gda_172[];double gda_176[];double gda_180[];double gda_184[];bool gi_188 = TRUE;datetime gt_192;double gd_196 = 0.0;double gd_204 = 0.0;double gd_212 = 0.0;double gd_220 = 0.0;double gd_228 = 0.0;double gd_236 = 0.0;double gd_244 = 0.0;double gd_252 = 0.0;double gd_260 = 0.0;double gd_268 = 0.0;double gd_276 = 0.0;double gd_284 = 0.0;double gd_292 = 0.0;double gd_300 = 0.0;double gd_308 = 0.0;double gd_316 = 0.0;double gd_324 = 0.0;double gd_332 = 0.0;double gd_340 = 0.0;double gd_348 = 0.0;double gd_356 = 0.0;double gd_364 = 0.0;int gi_372 = 100;int gi_376 = 0;double gda_380[];double gda_384[];int init() { gi_168 = Length; IndicatorBuffers(8); SetIndexStyle(0, DRAW_HISTOGRAM); SetIndexStyle(1, DRAW_HISTOGRAM); SetIndexStyle(2, DRAW_HISTOGRAM); SetIndexStyle(3, DRAW_HISTOGRAM); SetIndexStyle(4, DRAW_ARROW); SetIndexStyle(5, DRAW_ARROW); SetIndexArrow(4, 159); SetIndexArrow(5, 159); SetIndexBuffer(0, gda_128); SetIndexBuffer(1, gda_132); SetIndexBuffer(2, gda_136); SetIndexBuffer(3, gda_140); SetIndexBuffer(4, gda_144); SetIndexBuffer(5, gda_148); SetIndexBuffer(6, gda_152); SetIndexBuffer(7, gda_164); SetIndexLabel(0, "Plot0"); SetIndexLabel(1, "Plot1"); SetIndexLabel(2, "Plot2"); SetIndexLabel(3, "Plot3"); ArrayResize(gda_172, gi_168); ArrayResize(gda_176, gi_168); ArrayResize(gda_180, gi_168); ArrayResize(gda_184, gi_168); ArraySetAsSeries(gda_172, TRUE); ArraySetAsSeries(gda_176, TRUE); ArraySetAsSeries(gda_180, TRUE); ArraySetAsSeries(gda_184, TRUE); ArraySetAsSeries(gda_156, TRUE); ArraySetAsSeries(gda_160, TRUE); ArrayResize(gda_156, Bars); ArrayResize(gda_160, Bars); gi_188 = TRUE; return (0);}int start() { string ls_0; double ld_32; int li_40; int li_44; int li_48; double ld_52; double ld_60; double ld_68;/* if (AccountNumber() == 0) return (0); if (IsValidated() == 1) gi_124 = TRUE; Comment(""); if (gi_124 == FALSE) { ls_0 = "12345678901234567890123456789012345678901234567890ABCDEFGHIJKLMNOP"; int lia_8[] = {0}; int lia_12[] = {0}; ValidateUser(Username, Password, AccountNumber(), 0, lia_12, lia_8, ls_0); if (lia_12[0] == 1) { Print("Validated"); gi_124 = TRUE; } else { Alert("Not validated - return message: ", ls_0); return (0); } }*/ int li_24 = IndicatorCounted(); if (li_24 if (li_24 > 0) li_24--; if (li_24 > 0) li_24--; int li_16 = Bars - li_24; li_16 = MathMax(gi_168, Bars - li_24); bool li_28 = FALSE; if (gt_192 != Time[0]) li_28 = TRUE; gt_192 = Time[0]; if (li_28) { ArrayResize(gda_156, Bars); ArrayResize(gda_160, Bars); for (int li_20 = Bars - 1; li_20 >= 0; li_20--) { gda_156[li_20] = Close[li_20] - (Close[li_20 + 1]); gda_160[li_20] = MathAbs(Close[li_20 + 1]); } } else { for (li_20 = li_16 - 1; li_20 >= 0; li_20--) { gda_156[li_20] = Close[li_20] - (Close[li_20 + 1]); gda_160[li_20] = MathAbs(Close[li_20 + 1]); } } for (li_20 = li_16 - 1; li_20 >= 0; li_20--) gda_152[li_20] = f0_0(Length, 4, 4, gda_156, gda_160, li_20); for (li_20 = li_16 - 1; li_20 >= 0; li_20--) { gda_164[li_20] = iMAOnArray(gda_152, 0, 3, 0, MODE_EMA, li_20); ld_32 = iMAOnArray(gda_152, 0, 7, 0, MODE_EMA, li_20); li_40 = 11; li_44 = 2; li_48 = 11; ld_52 = iCustom(NULL, 0, gs_kaufman3_96, li_44, li_44, li_48, gd_104, gd_112, gi_120, 0, li_20); ld_60 = f0_1(Close, 0, 9, li_20); ld_68 = ld_60 - ld_52; gda_144[li_20] = EMPTY_VALUE; gda_148[li_20] = EMPTY_VALUE; if (ld_68 > 0.0) gda_144[li_20] = 0; if (ld_68 gda_128[li_20] = EMPTY_VALUE; gda_132[li_20] = EMPTY_VALUE; gda_136[li_20] = EMPTY_VALUE; gda_140[li_20] = EMPTY_VALUE; if (gda_152[li_20] > 0.0 && gda_152[li_20] >= gda_164[li_20]) gda_128[li_20] = gda_152[li_20]; else { if ((gda_152[li_20] > 0.0 && gda_152[li_20] > ld_32 && gda_152[li_20] ld_32)) gda_136[li_20] = gda_152[li_20]; else { if (gda_152[li_20] else if ((gda_152[li_20] gda_164[li_20] && gda_152[li_20] 0.0 && gda_152[li_20] } } } return (0);}double f0_0(int ai_0, int ai_4, int ai_8, double ada_12[], double ada_16[], int ai_20) { int li_24 = MathMin(ArraySize(gda_172), ArraySize(ada_12)); for (int li_28 = li_24 - 1; li_28 >= 0; li_28--) gda_172[li_28] = iMAOnArray(ada_12, 0, ai_0, 0, MODE_EMA, ai_20 + li_28); for (li_28 = li_24 - 1; li_28 >= 0; li_28--) gda_176[li_28] = iMAOnArray(gda_172, 0, ai_4, 0, MODE_EMA, li_28); double ld_32 = 100.0 * iMAOnArray(gda_176, 0, ai_8, 0, MODE_EMA, 0); for (li_28 = li_24 - 1; li_28 >= 0; li_28--) gda_180[li_28] = iMAOnArray(ada_16, 0, ai_0, 0, MODE_EMA, ai_20 + li_28); for (li_28 = li_24 - 1; li_28 >= 0; li_28--) gda_184[li_28] = iMAOnArray(gda_180, 0, ai_4, 0, MODE_EMA, li_28); double ld_40 = iMAOnArray(gda_184, 0, ai_8, 0, MODE_EMA, 0); if (ld_40 != 0.0) return (ld_32 / ld_40); return (0);}double f0_1(double ada_0[], int ai_4, int ai_8, int ai_12) { if (gi_188) { gi_188 = FALSE; gi_376 = ai_8; if (gi_376 > gi_372) gi_376 = gi_372; if (gi_376 ArrayResize(gda_380, MathMax(gi_376, gi_372)); ArrayResize(gda_384, MathMax(gi_376, gi_372)); } for (int li_16 = 1; li_16 gda_384[li_16] = li_16 - 1; gda_380[li_16] = ada_0[ai_12 + li_16 - 1]; } gd_196 = 0; gd_204 = 0; for (li_16 = 1; li_16 gd_196 += gda_384[li_16]; gd_204 += gda_380[li_16]; } if (gi_376 != 0) { gd_196 /= gi_376; gd_204 /= gi_376; } gd_236 = 0; gd_244 = 0; gd_252 = 0; gd_268 = 0; gd_276 = 0; gd_284 = 0; for (li_16 = 1; li_16 gd_212 = gda_384[li_16] - gd_196; gd_220 = gda_380[li_16] - gd_204; gd_228 = gda_384[li_16] * gda_384[li_16] - gd_196 * gd_196; gd_236 += gd_212 * gd_212; gd_244 += gd_212 * gd_220; gd_252 += gd_220 * gd_220; gd_268 += gd_212 * gd_228; gd_276 += gd_228 * gd_228; gd_284 += gd_220 * gd_228; } double ld_20 = gd_236 * gd_276 - gd_268 * gd_268; if (ld_20 != 0.0) { gd_300 = (gd_244 * gd_276 - gd_284 * gd_268) / ld_20; gd_308 = (gd_236 * gd_284 - gd_268 * gd_244) / ld_20; } gd_292 = gd_204 - gd_300 * gd_196 - gd_308 * gd_196 * gd_196; return (gd_292 + gd_300 * ai_4 + gd_308 * ai_4 * ai_4);} Изменено 13 марта, 2019 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 13 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 марта, 2019 Если кого не затруднит можете посмотреть код индикатора, в одной строке ошибка, индикатор не мой но очень бы хотелось с ним поработать Привет! Готово. Индикатор вроде называется PBF_Squeeze из системы ColorBar Forex или PaintBarForex. На сайте есть скомпилированные файлы, а исходников нет. Если есть возможность прошу поделиться остальными исходниками из этой системы.PBF_Squeeze.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 13 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 марта, 2019 как посчитать сколько стоит лот в валюте, например при подсчете у меня лот 0.1=1$, но например у канадца меньше десятая лота стоит? vitek01 Вы вроде бывалый... лот 0.1 чего? "стоит" - это залог? А то вопрос как из плохого учебника по математике: 0.1 лот хз-чего стоит 1$, сколько стоит 0.1 лот канадца? :d 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 14 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 марта, 2019 Уважаемые комрады, как посчитать сколько стоит лот в валюте, например при подсчете у меня лот 0.1=1$, но например у канадца меньше десятая лота стоит? Там сложность есть. Не всегда и не по всем инструментам ДЦ транслирует стоимость тика. В этом случае - через текущий курс или кросс-курсы. Вечером, если не забуду, скину класс-обертку.Добавлено: 14-03-2019 16:13:05ПользуйтесьВ конструкторе указывается символ, по умолчанию - текущий.Методы double PointPrice(mCouunt=1) - возвращает цену указанного количества пунктов, по умолчанию 1, в валюте депозита. double GetLotPercentBallanceRisk(double mRisk,double mDeltaPrice) - возвращает расчетную величину лота для указанного риска (в долях от единицы 10%=0,1) и разницы котировок (именно котировок, а не пунктов).Значения возвращаются не нормализованные.CConvert.mqh Изменено 14 марта, 2019 пользователем ZloyZam 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 14 марта, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 марта, 2019 Цитата Привет! Готово. Индикатор вроде называется PBF_Squeeze из системы ColorBar Forex или PaintBarForex. На сайте есть скомпилированные файлы, а исходников нет. Если есть возможность прошу поделиться остальными исходниками из этой системы. Привет, спасибо, держи.PBF_2EMA_Color.mq4PBF_Fast_3MAs.mq4PBF_iTunnel.mq4PBF_OSOB.mq4PBF_PB_Direction.mq4PBF_Scalper_Show_Me.mq4PBF_Scalper_Show_Me_e3Nymous.mq4PBF_Trend_Bars_v2.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти