Перейти к содержанию

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


Рекомендуемые сообщения

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

срабатывание заданного шага(TralingStep) в этой функции происходит ТОЛЬ ПОСЛЕ ПЕРВОГО ШАГА равному всегда TralingStop(линии без убытка), а уже последующие шаги совершаются равные TralingStep.

Закомментируй (//) эти 2 строчки вот так:
// if(Ask-OrderOpenPrice() > TralingStop *Point || OrderStopLoss()==0)
// if(OrderOpenPrice()-Bid > TralingStop *Point || OrderStopLoss()==0)
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

в ней есть параметры 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
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
ZloyZam приветствую. Мы тут двигаем mql в массы, но осторожно, чтоб не испугать, сложную логику лучше не использовать..., типа:
int k=MathPow ( -1, last_type ) ;
Ссылка на сообщение
Поделиться на другие сайты

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

int k=MathPow ( -1, last_type ) ;
Сообщить модератору


Нормальный такой костыль )))

Добавлено: 26-02-2019 13:35:13

Мы тут двигаем mql в массы, но осторожно, чтоб не испугать, сложную логику лучше не использовать...,


Да ладно? С каких это пор тернарный оператор ?: сложной логикой стал? Изменено пользователем ZloyZam
Ссылка на сообщение
Поделиться на другие сайты

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

Если не затруднит кого то из начинающих и уже умеющих программистов, зайдите в мою тему и подсобите с советником. Ну или код напишите как это делать, а я бы уже сам попробовал в советник запихать.
http://tlap.com/forum/ugolok-programmista/13/napisat-sovetnik-po-indikatoru/19081/

Ссылка на сообщение
Поделиться на другие сайты

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

Приветствую! Не могу понять как это работает! Хочу узнать разницу в пунктах. Прошу помощи!
prise2=NormalizeDouble(iCustom(NULL,0,"magi",3,1,1,0,bar2),_Digits); выдает 1.3076300000000001
визуально на графике показывает 1.30763

prise4=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

Ссылка на сообщение
Поделиться на другие сайты

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

а по факту в коде
1.3076399999999999 - 1.3076300000000001 / _Point = 0,99999999998


при сравнении вещественных чисел нужно предварительно делать их нормализацию
Ссылка на сообщение
Поделиться на другие сайты

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


при сравнении вещественных чисел нужно предварительно делать их нормализацию


То есть вот так не катит
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);
конечный результат нужно нормализовывать Изменено пользователем MikR0ReR
Ссылка на сообщение
Поделиться на другие сайты

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

То есть вот так не катит
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;


У Вас обе формулы одинаковый результат дадут. И без скобок оба будут неправильными...
И они более логичны (при наличии скобок), нежели третий вариант, где нормализуете уже результат..
ИМХО.
Ссылка на сообщение
Поделиться на другие сайты

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

при сравнении вещественных чисел нужно предварительно делать их нормализацию


При сравнении двух double(float) надо сравнивать с 0.0(0.f) нормализованную разницу этих чисел. Это из основ работы с плавающей точкой. Вообще, об этом всегда надо помнить и учитывать.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

ZloyZam, дай пример кода вместо:
pip=NormalizeDouble(prise4,_Digits)-NormalizeDouble(prise2,_Digits)/_Point;


Если вам количество пипсов надо, то:
int pip=(int)MathRound((price4-price2)/_Point);
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Если вам количество пипсов надо, то:
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
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
MikR0ReR Ваш вариант ошибочен! и может выдавать неверный ответ, по сути NormalizeDouble у Вас не работает, а работает только (int) который просто отбрасывает дробную часть и в случае 0,99999 выдаст 0!
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
0ll я внимаю Вашему совету!

как хорошо что есть отладка.
double prise4=1.3076399999999999,
prise2=1.3076300000000001,
q1=(prise4-prise2),
ответ: 0.0000099999999998
q2=(prise4-prise2)/Point,
ответ: 0.9999999999843466
q3=MathRound((prise4-prise2)/Point),
ответ: 1.0
q4=NormalizeDouble((prise4-prise2)/Point,_Digits),
ответ: 1.0
q5=MathRound(0.9999900000000001),
ответ: 1.0
q6=NormalizeDouble(0.9999900000000001,_Digits),
ответ: 0.99999
q7=MathRound(0.00001),
ответ: 0.0
q8=NormalizeDouble(0.00001,_Digits),
ответ: 0.00001
q9=MathRound(0.99999),
ответ: 1.0
q0=NormalizeDouble(0.99999,_Digits);
ответ: 0.99999
Ссылка на сообщение
Поделиться на другие сайты

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


MikR0ReR Ваш вариант ошибочен! и может выдавать неверный ответ, по сути NormalizeDouble у Вас не работает, а работает только (int) который просто отбрасывает дробную часть и в случае 0,99999 выдаст 0!


У них все на плюсах писано, округление - это std::round, а там через прибавление 0.5 сделано, поэтому 0.999999 не должно получится

Добавлено: 08-03-2019 19:35:55

Кроме того, при касте double к int, начиная с определенного количества 9 после запятой начинает кастится к 1, а не к 0. Изменено пользователем ZloyZam
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
MikR0ReR не понял Вашего примера, вот что я имел в виду:

double d1 = 0.99999;
void OnStart()
{
Alert(" ( int ) = ", ( int )NormalizeDouble( d1, _Digits ) );
Alert(" MathRound = ", (int)MathRound( d1 ) );
}

ZloyZam, дружище, пиши понятнее, мне 6 десяток и некоторых терминов не понимаю...

Пример_округления.PNG

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

ZloyZam, дружище, пиши понятнее, мне 6 десяток и некоторых терминов не понимаю...


Перевожу на русский.
В стандартной библиотеке Си++, round(double), реализовано через прибавление к числу 0,5, а потом отбрасывание дробной части, таким образом, неопределенность при приведении к int исключена, так как не может получится 0,99999999. А вот нормализация - это уже совсем другое, и и в стандартной библиотеке с++ я ее не нашел, то есть она, скорее всего, у них самописная и я бы не стал ручаться, что NormalizeDouble((price1-price2)/_Point,_Digits) не окажется равной 0,9999, и, как следствие, при явном приведении к int получится 0.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Уважаемые комрады, как посчитать сколько стоит лот в валюте, например при подсчете у меня лот 0.1=1$, но например у канадца меньше десятая лота стоит?

Ссылка на сообщение
Поделиться на другие сайты

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

Если кого не затрудник можете посмотреть код индикатора, в одной строке ошибка, индикатор не мой но очень бы хотелось с ним поработать

Спойлер


/*
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);
}
Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

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


Если кого не затруднит можете посмотреть код индикатора, в одной строке ошибка, индикатор не мой но очень бы хотелось с ним поработать


Привет! Готово. Индикатор вроде называется PBF_Squeeze из системы ColorBar Forex или PaintBarForex. На сайте есть скомпилированные файлы, а исходников нет. Если есть возможность прошу поделиться остальными исходниками из этой системы.

PBF_Squeeze.mq4

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

как посчитать сколько стоит лот в валюте, например при подсчете у меня лот 0.1=1$, но например у канадца меньше десятая лота стоит?

vitek01 Вы вроде бывалый... лот 0.1 чего? "стоит" - это залог? А то вопрос как из плохого учебника по математике: 0.1 лот хз-чего стоит 1$, сколько стоит 0.1 лот канадца? :d
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Уважаемые комрады, как посчитать сколько стоит лот в валюте, например при подсчете у меня лот 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

Изменено пользователем ZloyZam
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Цитата


Привет! Готово. Индикатор вроде называется PBF_Squeeze из системы ColorBar Forex или PaintBarForex. На сайте есть скомпилированные файлы, а исходников нет. Если есть возможность прошу поделиться остальными исходниками из этой системы.


Привет, спасибо, держи.

PBF_2EMA_Color.mq4
PBF_Fast_3MAs.mq4
PBF_iTunnel.mq4
PBF_OSOB.mq4
PBF_PB_Direction.mq4
PBF_Scalper_Show_Me.mq4
PBF_Scalper_Show_Me_e3Nymous.mq4
PBF_Trend_Bars_v2.mq4

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...