Нужен скрипт, который рассчитывает размер открываемой позиции на бай и на селл. - страница 2

 
q-unit писал (а):


Спасибо Вам за ответ. Чечтно говоря, хотел чтобы скрипт автоматически устанавливал необходимый размер лота уже в вызываемом окне ордера, чтобы не приходилось туда самому его вписывать. Просто бывает, что забываю лот корректировать, поэтому и решил, чтобы скрипт сам это отслеживал.

  Именно в таком виде обычными средствами MQL4 это сделать невозможно. Выхода три:
  
1) Открывать позицию скриптом, а не через диалоговое окно, что не очень привычно для трейдера
2) По уже открытой неправильным объемом позиции советник/скрипт предложит добавиться нужным объемом и выведет диалоговое окно с нужным объемом добавки.
3) Изобрести что-то через WinAPI, но такой метод может не везде работать.
 
Scriptong:
q-unit писал (а):


Спасибо Вам за ответ. Чечтно говоря, хотел чтобы скрипт автоматически устанавливал необходимый размер лота уже в вызываемом окне ордера, чтобы не приходилось туда самому его вписывать. Просто бывает, что забываю лот корректировать, поэтому и решил, чтобы скрипт сам это отслеживал.

Именно в таком виде обычными средствами MQL4 это сделать невозможно. Выхода два:

1) Открывать позицию скриптом, а не через диалоговое окно, что не очень привычно для трейдера
2) Изобрести что-то через WinAPI, но такой метод может не везде работать.

Значит, лучше открывать позицию скриптом. По крайней мере, для меня, это не будет непривычно: тейки и лоссы тоже сейчас выставляю скриптом.
 
bstone:
Смешной пошел народ, однако.

Почему смешной?... Есть же раздел Code Base. Выкладывают же туда и скрипты, которые облегчают манипуляции. Вот и этот скрипт тоже можно выложить. И, поверьте, он будет восстребован.
 
Ну вы однозначно некорректно поставили вопрос. В результате вас поняли не так, но по доброму развернуто ответили на ваш вопрос. А вы бросились наезжать на доброго программиста-самаритянина. Чем меня и насмешили.
 
bstone:
Ну вы однозначно некорректно поставили вопрос. В результате вас поняли не так, но по доброму развернуто ответили на ваш вопрос. А вы бросились наезжать на доброго программиста-самаритянина. Чем меня и насмешили.


Интересно...

Ну, что ж. Поставьте, пожалуйста, мой вопрос корректно. Вернее, покажите, как должен был его сформулировать.

 
q-unit писал (а):


Значит, лучше открывать позицию скриптом. По крайней мере, для меня, это не будет непривычно: тейки и лоссы тоже сейчас выставляю скриптом.
Попробуйте мой скрипт. Описание работы здесь (Урок 11) - http://forum.radioforex.ru/viewtopic.php?t=1286&start=40,        

Я добавил в него параметр DepoPercent. Если Lots равно нулю, то позиция будет открываться таким лотом, чтобы в залоге было около DepoPercent от депозита.
В TypeOrder выставляйте тип позиции:

0 - Buy
1 - Sell
2 - BuyStop
3 - SellStop
4 - BuyLimit
5 - SellLimit
Файлы:
 
q-unit писал (а):


Интересно...

Ну, что ж. Поставьте, пожалуйста, мой вопрос корректно. Вернее, покажите, как должен был его сформулировать.


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

q-unit писал (а):

Спасибо Вам за ответ. Чечтно говоря, хотел чтобы скрипт автоматически устанавливал необходимый размер лота уже в вызываемом окне ордера, чтобы не приходилось туда самому его вписывать. Просто бывает, что забываю лот корректировать, поэтому и решил, чтобы скрипт сам это отслеживал.

А теперь сравните с первоначальной постановкой:

... Скажите, пожалуйста, есть ли у кого скрипт, который рассчитывает размер открываемой позиции (на бай и на селл) ...
 
// Скрипт вызывает окно нового ордера с нужным размером лота.
// Требуется установка галочки "Разрешить импорт DLL".
// Для удобства пользования можно присвоить скрипту горячую клавишу и 
// снять галочку "Подтверждать вызов функций DLL".
 
#include <WinUser32.mqh>
 
extern int OneLotUSD = 10000;  // Какому балансу соответствует один лот
extern int Dig = 1;  // Количество цифр после запятой в значении выставляемого лота
 
#import "user32.dll"
  int GetParent( int hWnd );
  int GetDlgItem( int hDlg, int nIDDlgItem );
  int GetLastActivePopup( int hWnd );
#import
 
#define PAUSE 100
 
 
// Функция расчета лота
double LotSize()
{
  return(MathMax(AccountBalance() / OneLotUSD, MarketInfo(Symbol(), MODE_MINLOT)));
}
 
void start()
{
   int hwnd = WindowHandle(Symbol(), Period());
   int hwnd_parent = 0;
 
   while (!IsStopped())
   {
      hwnd = GetParent(hwnd);
      
      if (hwnd == 0)
        break;
        
      hwnd_parent = hwnd;
   } 
   
   if (hwnd_parent != 0)  // нашли главное окно
   {
       PostMessageA(hwnd_parent, WM_COMMAND, 33266,0);  // Вызвали окно нового ордера
       Sleep(PAUSE);
 
       hwnd = GetLastActivePopup(hwnd_parent);  // Нашли его
       
       hwnd = GetDlgItem(hwnd, 0x568); // записали нужное значение лота
       hwnd = GetDlgItem(hwnd, 0x3E9);
       SetWindowTextA(hwnd, DoubleToStr(LotSize(), Dig));
   }
   
  return;
}
 
getch:
// Скрипт вызывает окно нового ордера с нужным размером лота.
// Требуется установка галочки "Разрешить импорт DLL".
// Для удобства пользования можно присвоить скрипту горячую клавишу и 
// снять галочку "Подтверждать вызов функций DLL".
 
#include <WinUser32.mqh>
 
extern int OneLotUSD = 10000;  // Какому балансу соответствует один лот
extern int Dig = 1;  // Количество цифр после запятой в значении выставляемого лота
 
#import "user32.dll"
  int GetParent( int hWnd );
  int GetDlgItem( int hDlg, int nIDDlgItem );
  int GetLastActivePopup( int hWnd );
#import
 
#define PAUSE 100
 
 
// Функция расчета лота
double LotSize()
{
  return(MathMax(AccountBalance() / OneLotUSD, MarketInfo(Symbol(), MODE_MINLOT)));
}
 
void start()
{
   int hwnd = WindowHandle(Symbol(), Period());
   int hwnd_parent = 0;
 
   while (!IsStopped())
   {
      hwnd = GetParent(hwnd);
      
      if (hwnd == 0)
        break;
        
      hwnd_parent = hwnd;
   } 
   
   if (hwnd_parent != 0)  // нашли главное окно
   {
       PostMessageA(hwnd_parent, WM_COMMAND, 33266,0);  // Вызвали окно нового ордера
       Sleep(PAUSE);
 
       hwnd = GetLastActivePopup(hwnd_parent);  // Нашли его
       
       hwnd = GetDlgItem(hwnd, 0x568); // записали нужное значение лота
       hwnd = GetDlgItem(hwnd, 0x3E9);
       SetWindowTextA(hwnd, DoubleToStr(LotSize(), Dig));
   }
   
  return;
}
Брокерам запрещающим АВТОМАТИЧЕСКУЮ торговлю посвящается ?


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

а брокеры запрещающие АВТОТРЕЙДИНГ сами вымирать будут все равно...

p.s.
но решение КРАСИВОЕ!
 
YuraZ:
getch:
// Скрипт вызывает окно нового ордера с нужным размером лота.
// Требуется установка галочки "Разрешить импорт DLL".
// Для удобства пользования можно присвоить скрипту горячую клавишу и 
// снять галочку "Подтверждать вызов функций DLL".
 
#include <WinUser32.mqh>
 
extern int OneLotUSD = 10000;  // Какому балансу соответствует один лот
extern int Dig = 1;  // Количество цифр после запятой в значении выставляемого лота
 
#import "user32.dll"
  int GetParent( int hWnd );
  int GetDlgItem( int hDlg, int nIDDlgItem );
  int GetLastActivePopup( int hWnd );
#import
 
#define PAUSE 100
 
 
// Функция расчета лота
double LotSize()
{
  return(MathMax(AccountBalance() / OneLotUSD, MarketInfo(Symbol(), MODE_MINLOT)));
}
 
void start()
{
   int hwnd = WindowHandle(Symbol(), Period());
   int hwnd_parent = 0;
 
   while (!IsStopped())
   {
      hwnd = GetParent(hwnd);
      
      if (hwnd == 0)
        break;
        
      hwnd_parent = hwnd;
   } 
   
   if (hwnd_parent != 0)  // нашли главное окно
   {
       PostMessageA(hwnd_parent, WM_COMMAND, 33266,0);  // Вызвали окно нового ордера
       Sleep(PAUSE);
 
       hwnd = GetLastActivePopup(hwnd_parent);  // Нашли его
       
       hwnd = GetDlgItem(hwnd, 0x568); // записали нужное значение лота
       hwnd = GetDlgItem(hwnd, 0x3E9);
       SetWindowTextA(hwnd, DoubleToStr(LotSize(), Dig));
   }
   
  return;
}
Брокерам запрещающим АВТОМАТИЧЕСКУЮ торговлю посвящается ?


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

а брокеры запрещающие АВТОТРЕЙДИНГ сами вымирать будут все равно...

p.s.
но решение КРАСИВОЕ!



Причина обращения: