Как кодировать? - страница 274

 

К сожалению, нет возможности изменить комментарий после того, как вы открыли ордер. Тогда это становится исключительной привилегией брокера (и они меняют его в случаях частичного закрытия) Похоже, что metatrader смог предоставить некоторым брокерам откат частичного закрытия только через поле комментария, а затем они решили полностью закрыть его от изменений для нас (простых смертных).

JohnCrawdford:
Здравствуйте,

Есть ли способ изменить OrderComment после создания ордера?

У меня есть советник, который создает отложенные ордера в ключевых точках, которые, вероятно, будут достигнуты, однако иногда эти ордера должны быть отменены/удалены из-за нежелательных быстрых движений на графиках, поэтому невозможно использовать номер тикета для идентификации каждого ордера, потому что каждый ордер ключевой точки может быть открыт и отменен/удален несколько раз, поэтому вместо этого советник использует уникальный OrderComment для идентификации каждого ордера, но время от времени компьютер, на котором работает советник, выходит из строя или обрывается интернет-соединение, что нарушает идентификацию ордеров ключевых точек, и поэтому было бы полезно изменить OrderComment, чтобы избежать ошибок, вызванных беспорядком, который создается после перезапуска советника без предварительного завершения предыдущего исполнения.

Очень запутанно, правда?

P.S. Магическое число используется для идентификации ордеров, созданных советником, поэтому я не могу использовать это число для идентификации каждого ордера в отдельности.

Если кто-нибудь может подсказать мне, есть ли способ изменить OrderComments, я буду благодарен,

Заранее спасибо.
 

Как сделать динамическую компиляцию в советнике?

Привет, мир!

Я хочу знать, как создать советника с динамической компиляцией (F5), например, каждые 20 секунд.

Я видел, что функция F5 определена VK_F5 (спасибо Coders Guru!). Но как запустить?

вот мой советник

**********************************

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

#property copyright "Copyright © 2008, Systematic-Forex"

#property link "http://www.systematic-forex.com"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 LightGray // Yellow

extern int TimeFrame = 5;

/*

extern string help_magic_number = "установите его, если вы будете использовать вариант закрытия 3 - закрытие по магическому числу";

extern int magic_number = 0; // установите его, если вы будете использовать вариант закрытия 3 - закрытие по магическому числу

extern string help_comment_text = "установите его, если вы будете использовать вариант закрытия 4 - закрытие по комментарию";

extern string comment_text = "";

extern bool HotKeyOn = true;

extern bool CtrlOn = true;

extern bool ShiftOn = false;

extern bool AltOn = false;

extern string HotKey = "A";

*/

#import "user32.dll"

bool GetAsyncKeyState(int nVirtKey);

#import

#include //for MessageBoxA

//---- Флаги MessageBox()

#define MB_OK 0x000000

#define MB_OKCANCEL 0x00000001

#define MB_ABORTRETRYIGNORE 0x00000002

#define MB_YESNOCANCEL 0x00000003

#define MB_YESNO 0x00000004

#define MB_RETRYCANCEL 0x00000005

#define MB_ICONHAND 0x00000010

#define MB_ICONQUESTION 0x00000020

#define MB_ICONEXCLAMATION 0x00000030

#define MB_ICONASTERISK 0x00000040

#define MB_USERICON 0x00000080

#define MB_ICONWARNING MB_ICONEXCLAMATION

#define MB_ICONERROR MB_ICONHAND

#define MB_ICONINFORMATION MB_ICONASTERISK

#define MB_ICONSTOP MB_ICONHAND

#define MB_DEFBUTTON1 0x000000

#define MB_DEFBUTTON2 0x00000100

#define MB_DEFBUTTON3 0x00000200

#define MB_DEFBUTTON4 0x00000300

#define MB_APPLMODAL 0x000000

#define MB_SYSTEMMODAL 0x00001000

#define MB_TASKMODAL 0x00002000

#define MB_HELP 0x00004000 // Кнопка помощи

#define MB_NOFOCUS 0x00008000

#define MB_SETFOREGROUND 0x00010000

#define MB_DEFAULT_DESKTOP_ONLY 0x00020000

#define MB_TOPMOST 0x00040000

#define MB_RIGHT 0x00080000

#define MB_RTLREADING 0x00100000

#define KEYEVENTF_EXTENDEDKEY 0x0001

#define KEYEVENTF_KEYUP 0x0002

#define VK_0 48

#define VK_1 49

#define VK_2 50

#define VK_3 51

#define VK_4 52

#define VK_5 53

#define VK_6 54

#define VK_7 55

#define VK_8 56

#define VK_9 57

#define VK_A 65

#define VK_B 66

#define VK_C 67

#define VK_D 68

#define VK_E 69

#define VK_F 70

#define VK_G 71

#define VK_H 72

#define VK_I 73

#define VK_J 74

#define VK_K 75

#define VK_L 76

#define VK_M 77

#define VK_N 78

#define VK_O 79

#define VK_P 80

#define VK_Q 81

#define VK_R 82

#define VK_S 83

#define VK_T 84

#define VK_U 85

#define VK_V 86

#define VK_W 87

#define VK_X 88

#define VK_Y 89

#define VK_Z 90

#define VK_LBUTTON 1 //Левая кнопка мыши

#define VK_RBUTTON 2 //Правая кнопка мыши

#define VK_CANCEL 3 //Обработка прерывания управления

#define VK_MBUTTON 4 //Средняя кнопка мыши (трехкнопочная мышь)

#define VK_BACK 8 //клавиша BACKSPACE

#define VK_TAB 9 //клавиша табуляции

#define VK_CLEAR 12 //клавиша CLEAR

#define VK_RETURN 13 //клавиша ENTER

#define VK_SHIFT 16 //клавиша SHIFT

#define VK_CONTROL 17 //клавиша CTRL

#define VK_MENU 18 //клавиша ALT

#define VK_PAUSE 19 // клавиша ПАУЗА

#define VK_CAPITAL 20 //клавиша CAPS LOCK

#define VK_ESCAPE 27 // клавишаESC

#define VK_SPACE 32 //SPACEBAR

#define VK_PRIOR 33 //клавиша "вверх страницы

#define VK_NEXT 34 //клавиша перехода на страницу вниз

#define VK_END 35 //Клавиша END

#define VK_HOME 36 //Клавиша HOME

#define VK_LEFT 37 //Клавиша "левая стрелка

#define VK_UP 38 // клавиша со стрелкой вверх

#define VK_RIGHT 39 //ПРАВАЯ СТРЕЛКА

#define VK_DOWN 40 // клавиша "стрелка вниз

#define VK_PRINT 42 //клавиша PRINT

#define VK_SNAPSHOT 44 //клавиша "Печать экрана

#define VK_INSERT 45 //клавиша INS

#define VK_DELETE 46 // клавиша DEL

#define VK_HELP 47 // клавиша HELP

#define VK_LWIN 91 //Левая клавиша Windows (клавиатура Microsoft® Natural®)

#define VK_RWIN 92 //Правая клавиша Windows (клавиатура Natural)

#define VK_APPS 93 //Клавиша приложений (естественная клавиатура)

#define VK_SLEEP 95 //Клавиша "Сон компьютера

#define VK_NUMPAD0 96 //Клавиша цифровой клавиатуры 0

#define VK_NUMPAD1 97 //Клавиша цифровой клавиатуры 1

#define VK_NUMPAD2 98 //Клавиша цифровой клавиатуры 2

#define VK_NUMPAD3 99 //Клавиша цифровой клавиатуры 3

#define VK_NUMPAD4 100 //Цифровая клавиатура 4 клавиша

#define VK_NUMPAD5 101 //Цифровая клавиатура 5 клавиша

#define VK_NUMPAD6 102 //Цифровая клавиатура 6 клавиша

#define VK_NUMPAD7 103 //Цифровая клавиатура 7 клавиша

#define VK_NUMPAD8 104 //Цифровая клавиатура 8 клавиша

#define VK_NUMPAD9 105 //Цифровая клавиатура 9 клавиша

#define VK_MULTIPLY 106 //Клавиша умножения

#define VK_ADD 107 //Клавиша добавления

#define VK_SEPARATOR 108 //Клавиша разделителя

#define VK_SUBTRACT 109 //Клавиша вычитания

#define VK_DECIMAL 110 //Десятичная клавиша

#define VK_DIVIDE 111 //Клавиша деления

#define VK_F1 112 // клавиша F1

#define VK_F2 113 //F2 ключ

#define VK_F3 114 //F3 ключ

#define VK_F4 115 //F4 ключ

#define VK_F5 116 //F5 ключ

#define VK_F6 117 //F6 ключ

#define VK_F7 118 //F7 ключ

#define VK_F8 119 //F8 ключ

#define VK_F9 120 //F9 ключ

#define VK_F10 121 //F10 ключ

#define VK_F11 122 //F11 ключ

#define VK_F12 123 //F12 ключ

#define VK_F13 124 //F13 ключ

#define VK_NUMLOCK 144 //NUM LOCK ключ

#define VK_SCROLL 145 //SCROLL LOCK ключ

#define VK_LSHIFT 160 //Левая клавиша SHIFT

#define VK_RSHIFT 161 //Правая клавиша SHIFT

#define VK_LCONTROL 162 //Левая клавиша CONTROL

#define VK_RCONTROL 163 //Правая клавиша управления

#define VK_LMENU 164 //Левая клавиша MENU

#define VK_RMENU 165 //Правая клавиша MENU

//---- буферы

double Buffer[];

int i,j;

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- индикаторы

SetIndexStyle(0,DRAW_LINE);

//SetIndexStyle(0,DRAW_SECTION);

//SetIndexStyle(0,DRAW_ARROW);

//SetIndexStyle(0,DRAW_HISTOGRAM);

//SetIndexStyle(0,DRAW_ZIGZAG);

//SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,Buffer);

SetIndexEmptyValue(0,EMPTY_VALUE);

Comment("\n"+"test_A_sar");

//----

return(0);

}

//+------------------------------------------------------------------+

//| Функция деинициализации индикатора Custor |

//+------------------------------------------------------------------+

int deinit()

{

Comment("");

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция итерации индикатора |

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(int i=0; i<limit; i++)

{

datetime i_Time = iTime(NULL, 0, i);

int j = iBarShift(NULL, TimeFrame, i_Time, bool false);

double sar_m5 = iSAR(NULL, PERIOD_M5 , 0.02, 0.2, j + 0);

double var_indicateur = sar_m5 ;

/*

//

if(Seconds()== 20)

{

Скомпилировано или VK_F5

}

if(Seconds()== 40)

{

Скомпилировано или VK_F5

}

*/

Buffer= sar_m5;

}

return(0);

}

//+------------------------------------------------------------------+

**********************************

С наилучшими пожеланиями test_a_sar_m5.mq4test_a_sar_m5.mq4

Файлы:
 

Помогите

Я столкнулся с одной проблемой из-за стоп лосса, если кто может дать мне ответ по этому поводу. проблема в том, что на некоторых графиках metatrader значение ценовых баров показывает пятизначное значение (1.4545), но в моем metatrader оно показывает шестизначное значение (1.45456). поэтому, когда он пытается поставить стоп лосс по вашей системе, значение стоп лосса становится от 200 пипсов до 400 пипсов. я не знаю, как это исправить. я подвергаю себя большому риску. я взорвал свой счет дважды из-за этой проблемы.

Заранее спасибо.

 

стратегия келли в управлении капиталом по мартингейлу

Кто-нибудь может изменить это на стратегию Келли или деление на 10.

Мой размер лота 0.10, когда начальный капитал составляет $250, он должен измениться на 0.11, когда капитал вырастет до $500.

-------------------------------------------------------------------

if(Money_management)

{

switch(AccountType)

{

case 0: lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1); break;

case 1: lotsi=NormalizeDouble((risk*AccountEquity())/100000,2); break;

case 2: lotsi=NormalizeDouble((risk*AccountEquity())/1000,2); break;

default: lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1); break;

}

-------------------------------------------------------------------

Спасибо

 

Вопрос по icustom

Я знаю, что я уже писал в теме icustom, но...

согласно коду гуру

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

как я могу получить другой таймфрейм с тем же буфером?

Обратите внимание, что один и тот же clr будет иметь разное значение для двух разных таймфреймов.

Как это можно обойти?

 
khatrisushil:
Я столкнулся с одной проблемой из-за стоп-лосса, если кто-нибудь может дать мне ответ по этому поводу. проблема в том, что на некоторых графиках metatrader значение ценовых баров показывает пятизначное значение (1.4545), но в моем metatrader оно показывает шестизначное значение (1.45456). поэтому, когда он пытается поставить стоп-лосс по вашей системе, значение стоп-лосса становится от 200 пипсов до 400 пипсов. я не знаю, как это исправить. я подвергаю себя большому риску. я взорвал свой счет дважды из-за этой проблемы. спасибо заранее.

кулак должен определить брокеру, что за цифра

в коде вы должны уметь определять тип цифры, есть достаточно примеров по кодированию цифровых советников.

Поэтому вы можете изучить некоторые советники, которые могут работать с 4 или 5 значными брокерами.

 

Помогите мне модифицировать мой советник на брокера Market execution!

Привет всем, я новичок в советниках, я создал советник с трагическим сигналом:

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

if (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL;

Но я не понимаю, почему мой советник может прекрасно работать на Instant Execution (я так думаю), но на рыночном исполнении он ничего не делает, я трейдер easy-forex, на их демо-счете с Instant execution мой советник работает прекрасно, но на реальном счете с Market execution мой советник ничего не делает, я имею в виду, что он не может анализировать график на этом MT4, не ошибка, ничего.

Я связался со службой поддержки easy-forex, и они сказали мне, что это разное мгновенное исполнение и рыночное исполнение. Так что я нашел кого-то, кто имеет опыт работы с советниками и торговлей. Пожалуйста! Помогите мне модифицировать мой советник.

Большое спасибо!

 
alvintran:
Привет всем, я новичок в советниках, я создал советник с трагическим сигналом:

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

if (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL;

Но я не понимаю, почему мой советник может прекрасно работать на Instant Execution (я так думаю), но на рыночном исполнении он ничего не делает, я трейдер easy-forex, на их демо-счете с Instant execution мой советник работает прекрасно, но на реальном счете с Market execution мой советник ничего не делает, я имею в виду, что он не может анализировать график на этом MT4, не ошибка, ничего.

Я связался со службой поддержки easy-forex, и они сказали мне, что это разное мгновенное исполнение и рыночное исполнение. Так что я нашел кого-то, кто имеет опыт работы с советниками и торговлей. Пожалуйста, помогите мне модифицировать советника.

Большое спасибо!

[lang=pl]Я думаю, что это может быть проблема с SL/TP. Пожалуйста, покажите мне ваш код, или часть

где вы посылаете ордера.

Будьте здоровы,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Я думаю, что это может быть проблема с SL/TP. Пожалуйста, покажите мне ваш код, или часть

куда вы отправляете заказы.

Ваше здоровье,

Grzesiek[/lang]

Нет, нет, это не проблема SL/TP, я знаю эту проблему, я сказал, что он ничего не делает, это означает, что на демо-счете ( мгновенное исполнение или что-то еще, я не знаю) он работает нормально, но на реальном счете он не работает, не имеет никаких проблем, просто ничего не делает.

Этот советник мной написан, не купить, не пробная версия, не любой ограниченный.

Пожалуйста! Помогите

 

Добавление таймфреймов и получение буферов

mtuppers:

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

как я могу получить другой таймфрейм с тем же буфером?

обратите внимание, что один и тот же clr будет иметь разное значение для двух разных таймфреймов.

как обойти это?

Привет Mtuppers,

Исходный текущий таймфрейм:

double clr = iCustom(NULL,0, "LSMA in Color",14,1500,5,0);

Добавьте нужный вам период времени и измените имя переменной, чтобы сделать их разными (clr и clr2):

double clr2 = iCustom(NULL,Period_H1, "LSMA in Color",14,1500,5,0); // Временной интервал Period_H1.

В индикаторе "LSMA in Color" - есть 3 буфера для цветов, а не один, поэтому вы можете использовать 3 оператора iCustom, чтобы получить их все.

Вот номера буферов:

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexBuffer(0,ExtMapBuffer3);

SetIndexBuffer(3,sum);

SetIndexBuffer(4,wt);

SetIndexBuffer(5,clr);

* Обратите внимание, что в вашем примере вы используете буфер 0, поэтому на самом деле вы получаете только один цвет в ExtMapBuffer3. Буфер "clr" является буфером 5.

Вот назначения цветовых буферов в индикаторе:

ExtMapBuffer3[shift] = wt[shift]; //красный

ExtMapBuffer2[shift] = wt[shift]; //зеленый

ExtMapBuffer1[shift] = wt[shift]; //желтый

Надеюсь, это поможет,

Роберт