Кнопки и текстовые поля на графике mt4 теперь возможны - страница 6

 

Привет,

Может ли кто-нибудь здесь предоставить мне файлы для этого, пожалуйста? Я бы очень хотел иметь возможность использовать этот вид функциональности, я зашел на fx1.net и не могу найти ничего вообще. Пробовал гуглить, но мне не повезло найти все файлы для скачивания.

Если кто-нибудь будет достаточно добр, чтобы предоставить копии, я буду очень признателен. Мой e-mail: paul@lukafour3.com или просто напишите мне.

С уважением

Пол

 
fridaystreet:

Привет,

Может ли кто-нибудь здесь предоставить мне файлы для этого, пожалуйста? Я бы очень хотел иметь возможность использовать этот вид функциональности, я зашел на fx1.net и не могу найти ничего вообще. Пробовал гуглить, но мне не повезло найти все файлы для скачивания.

Если кто-нибудь будет достаточно добр, чтобы предоставить копии, я буду очень признателен. Мой e-mail: paul@lukafour3.com или просто напишите мне.

С уважением

Пол


На самом деле, я не понимаю вашей проблемы.

Я получил свои копии, посетив сначала сайт fx1.net, который привел меня на этот сайт:

https://www.mql5.com/go?link=http://taurus-traders.com/index.php/de/services/forex-download/viewdownload/6-plugins/246-mt4gui-toolbox-addon-for-metatrader

Оттуда я взял dll-ки. Кнопка "Download" находится внизу страницы, после текста.

Там все объясняется, как использовать функции для создания кнопок.

Только помните о минусах и сначала тщательно протестируйте свою программу на демо-версии, чтобы избежать неприятных сюрпризов.

если вы собираетесь использовать эти кнопки в реальной торговле на реальном счете!!!

Также, прочитайте эту тему от начала и до конца!

И: Вы искали в Гугле "mt4gui.dll" ???? Попробуйте, вы будете удивлены, насколько это просто!!!

 

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

Я написал простой советник на основе MT4GUI, но, к сожалению, MT4 падает, когда я пытаюсь изменить таймфрейм (например, с M1 на M5). Кто-нибудь еще сталкивался с этим или знает, как это исправить?

Я перепробовал множество способов, но пока не смог найти решение. Даже самый простой советник с кнопками падает при смене таймфреймов. Я столкнулся с этой проблемой на билдах 432 и 438.

Спасибо

 
darksamu:

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

Я написал простой советник на основе MT4GUI, но, к сожалению, MT4 падает, когда я пытаюсь изменить таймфрейм (например, с M1 на M5). Кто-нибудь еще сталкивался с этим или знает, как это исправить?

Я перепробовал множество способов, но пока не смог найти решение. Даже самый простой советник с кнопками падает при смене таймфреймов. Я столкнулся с этой проблемой на билдах 432 и 438.

Спасибо

Да, это так. Я писал об этом ранее.

Вы ничего не можете с этим поделать, это проблема dll.

Просто обходите эту проблему, открывая много графиков, каждый с разным TF.

Или, я также делаю это следующим образом:

Есть еще одна ситуация, когда dll-ки рушат MT4, когда вы хотите изменить внешние параметры, нажав на смайлик.

Вот почему я сделал кнопку Defaults, которая удаляет советника и открывает его снова, открывая окно инициации советника.

 

Привет, Дадас,

не могли бы вы вставить часть вашего кода, пожалуйста? Я не знаю, как создать меню "Выбрать размер лота". Спасибо.

 
endy5:

Привет, Дадас,

не могли бы вы вставить часть вашего кода, пожалуйста? Я не знаю, как создать меню "Выбрать размер лота". Спасибо.


int    hwnd = WindowHandle(Symbol(),Period());

string MinimumLot = DoubleToStr(MarketInfo(Symbol(),MODE_MINLOT),2);

int SelectLotSizeBox = tbPutObject(hwnd,"list",-130,213,60,9,"");
    tbAddListItem(hwnd,SelectLotSizeBox,MinimumLot);
    if(MinimumLot=="0.01"){
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.02");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.03");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.04");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.05");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.06");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.07");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.08");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.09");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.10");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.20");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.30");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.40");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.60");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.70");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.80");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.90");
    tbAddListItem(hwnd,SelectLotSizeBox ,"1.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"2.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"3.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"4.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"5.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"6.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"7.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"8.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"9.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"10.00");}
    if(MinimumLot=="0.10"){  
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.20");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.30");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.40");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.60");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.70");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.80");
    tbAddListItem(hwnd,SelectLotSizeBox ,"0.90");
    tbAddListItem(hwnd,SelectLotSizeBox ,"1.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"2.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"3.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"4.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"5.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"6.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"7.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"8.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"9.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"10.00");}
    if(MinimumLot=="1.00"){    
    tbAddListItem(hwnd,SelectLotSizeBox ,"2.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"3.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"4.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"5.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"6.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"7.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"8.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"9.00");
    tbAddListItem(hwnd,SelectLotSizeBox ,"10.00");    
    }
    tbSetListSel(hwnd,SelectLotSizeBox ,0);
Вот как я это делаю.
 
Добрый день.
Извините за мой английский, я француз.
Я не очень хорошо понимаю, как работают списки.
не могли бы вы рассказать мне, как он восстанавливает свои значения?

пример

    tbAddListItem(hwnd,SelectLotSizeBox ,"2.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"3.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"4.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"5.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"6.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"7.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"8.50");
    tbAddListItem(hwnd,SelectLotSizeBox ,"9.50"); 

tbAddListItem(hwnd,SelectLotSizeBox ,"10.00");

сердечно
 

Привет Дадас!

спасибо большое за то, что вставил свой прошлый код!!! У меня это мой код :-)

Но у меня есть один вопрос - как мне получить значение (размер лота) из меню выбора (объект SelectLotSizeBox).

Я нашел функцию:string tbGetListSel(int hwnd, int object);

Код:string size=tbGetListSel(hwnd, SelectLotSizeBox);

return for select lotize 0.01 value zero,

для select lotize 0.02 значение 1 и т.д. Это серийный номер выбранного товара. Могу ли я получить непосредственно значение lotize (0.01; 0.02; и т.д.)?

Спасибо за помощь.

 
phenix77:
Добрый день.
Извините за мой английский, я француз.
Я не очень хорошо понимаю, как работают списки.
не могли бы вы рассказать мне, как он восстанавливает свои значения?

пример

tbAddListItem(hwnd,SelectLotSizeBox ,"10.00");

Знакомо ли вам это?

  string tbVersion();         
  int tbPutObject(int,string,int,int,int,int,string); // hwnd,type,x,y,w,h,label     
  int tbSetBgColor(int,int,int); // hwnd,object,bgcolor  
  int tbSetTextColor(int,int,int); // hwnd,object,color  
  int tbRemove(int,int);
  int tbRemoveAll(int); // hwnd 
  int tbEnable(int,int,int); // hwnd, object, 0|1   
  bool tbIsClicked( int,int ); // hwnd,object  
  int tbSetText(int,int,string,int,string); // hwnd,object,text,fontsize,fontname     
  string tbGetText(int,int); // hwnd,object 
  int tbAddListItem(int,int,string); // hwnd,object,item  
  int tbGetListSel(int,int); // hwnd,object  
  int tbSetListSel(int,int,int); // hwnd,object,index 
Это даст вам значение:
Lot=StrToDouble(tbGetText(hwnd,SelectLotSizeBox));

Текст в поле выбора - это текст, то есть строка - так?

И вы должны превратить эту строку в двойную - так?

 
endy5:

Привет, Дадас,

Нашел функцию:string tbGetListSel(int hwnd, int object);

Код:string size=tbGetListSel(hwnd, SelectLotSizeBox);

return for select lotize 0.01 value zero,

для select lotize 0.02 значение 1 и т.д. Это серийный номер выбранного товара. Могу ли я получить непосредственно значение lotize (0.01; 0.02; и т.д.)?

Спасибо за помощь.

// It is:
string tbGetText(int,int); // hwnd,object 
// This one is int (integer):
int tbGetListSel(int,int); // hwnd,object  
// You are looking for:
double size = StrToDouble(tbGetText(hwnd,SelectLotSizeBox));