[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 206

 

Вы проиграли... Адекватным оказался я !

У вас всё-таки установлена мт4 БРОКО-ИНВЕСТОР. Или вы (скорее всего) элементарно перепутали сервер, когда открывали демо-счет

Это легко увидеть по названию валют. Только там к названию валют присоед. окончание _FX

 Мин. лот там =0.1 и там в ОБЗОРЕ РЫНКА присутствуют только валюты (инструментов Фондового рынка там нет)

Не упрямтесь. Идите на сайт Броко и скачайте мт4 из раздела Броко-трейдер. 

Либо откройте демосчет на сервере 87.239.184.73:443  

Но при этом, всё равно в онлайне позиции открываться  не будут и журнал будет выдавать ошибку. Так что, идите - вникайте, как программно открыть позицию в 2 этапа.

 

У меня есть 10 минут времени. И  я сейчас приведу пример кода, как я открываю позиции в БРОКО.

В САМЫЙ-САМЫЙ конец кода вашего советника (вне ф-и СТАРТ) нужно вставить вот эту функцию:

//Для  открытие позиций в условиях рыночного
 //                    исполнения торговых заявок 
int WHCOrderSend(string symbol, 
                 int cmd, 
                 double volume, 
                 double price, 
                 int slippage, 
                 double stoploss, 
                 double takeprofit, 
                 string comment, 
                 int magic, 
                 datetime expiration, 
                 color arrow_color)
{
   int ticket = OrderSend(symbol,cmd, volume, price, slippage, 0, 0, comment, 
                                                    magic, expiration, arrow_color);   
   int check = -1;
   if (ticket > 0 && (stoploss != 0 || takeprofit != 0)) {
    if (!OrderModify(ticket, price, stoploss, takeprofit,expiration, arrow_color)) {
         check = GetLastError();
     if (check != ERR_NO_ERROR) {
       Print("OrderModify error: ", ErrorDescription(check));
         }}} else {
      check = GetLastError();
      if (check != ERR_NO_ERROR){
         Print("OrderSend error: ",ErrorDescription(check));
      }}   return (ticket);}

 

Тогда стопы во внешних параметрах будут задаваться так:

extern int     Magic = 777;
extern int      StopLoss=90;
extern int      TakeProfit=90;

double SL,TP;
int ticket;
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>
//---------------------------------
А сами позиции открываются вот так:
 
//если условия соответсвуют заданным, 
// открывем позицию бай 
SL=0;TP=0;
if(StopLoss>0)   SL=Ask-Point*StopLoss;
if(TakeProfit>0) TP=Ask+Point*TakeProfit;   
ticket=WHCOrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"Dayria_02",Magic,0,Blue);
if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); 
               Sleep(10000);   return (0); }
 Аналогично, для селл-позиций:
SL=0;TP=0;
if(StopLoss>0)   SL=Bid+Point*StopLoss;
if(TakeProfit>0) TP=Bid-Point*TakeProfit;   
ticket=WHCOrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"Dayria_02",Magic,0,Red);
if(ticket < 0){Print("Ошибка открытия ордера SELL #", GetLastError()); 
                Sleep(10000);   return (0);  }
 

rid, спасибо огромное за отзыв, я действительно выбрал не тот сервер. Разбираюсь с кодом.

 

Ни спорьте (с) ибо легко попутаться.



Терминал от Лайф, а демка чужая... ;)

Поэтому главенство за подключеным сервером нежели название терминала либо компании.

Тем более такой где развели эМТов как тараканов... )))

 
kombat >>:

....Поэтому главенство за подключеным сервером нежели название терминала либо компании.

Тем более такой где развели эМТов как тараканов... )))



Да, конечно. 

Но для начинающих, зачастую,  легче скачать по новой платформу, чем вводить другой сервер.

 
cdover >>:

rid, спасибо огромное за отзыв, я действительно выбрал не тот сервер. Разбираюсь с кодом.

Кстати. В тестере советник должен работать и без функции модификации.

Если вам нужно на скорую руку проверить программно-выполненную идею, то воспользуйтесь тестером мт4 (здесь  доступно и толково описано, как это сделать)- 

'Тестирование и оптимизация советников'

 
rid писал(а) >>

Кстати. В тестере советник должен работать и без функции модификации.

Если вам нужно на скорую руку проверить программно-выполненную идею, то воспользуйтесь тестером мт4 (здесь доступно и толково описано, как это сделать)-

'Тестирование и оптимизация советников'

да, с тестером я работаю и как раз было странно то что в нем -то все работает и выдает отчеты оптимизации.

 
granit77 >>:

Я это и имел в виду, предлагая прогнать одинаковое окружение (объекты, индикаторы) с шаблоном и без.

А что касается замедления тестера, то для меня это черная дыра. Такие фокусы иногда творятся с совершенно безобидными советниками, что диву даешься, а в журнале все ОК. Поэтому не беру на себя смелость ничего советовать, кроме самых простых случаев. Самому бы разобраться :))

..Зато какой кайф испытываешь когда обнаруживается решение :)

 

Добрый день!

Помогите разобраться с вопросом:

Нужно написать формулу расчета залога по одному инструменту.

Как извлечь общую сумму залога понятно - через формулу,

а как разложить данный залог по инструментам (валютам)?

Ведь есть только бай и сейл, а есть и локи.

MODE_MARGININIT 29 Начальные залоговые требования для 1 лота
MODE_MARGINMAINTENANCE 30 Размер залоговых средств для поддержки открытых позиций в расчете на 1 лот
MODE_MARGINHEDGED 31 Маржа, взимаемая с перекрытых позиций в расчете на 1 лот

Нужно как-то использовать данные формулы, только не понятно в чем их отличие и когда употреблять?

В результат нужно получить раскладку общей суммы залога по отдельным инструментам.

То есть открытые лоты по одному инструменту используют столько-то залога ... Другой столько-то... и т.д.раскладка.

Может быть у кого-то есть наработки? Спасибо.