Ваши вопросы по языку MQL4

saenko

Интересующийся
Подскажите пожалуйста!!! как сделать так чтобы каждая последующая сделка откравалась с увеличением лота?
 

eevviill

Заблокирован
Подскажите пожалуйста!!! как сделать так чтобы каждая последующая сделка откравалась с увеличением лота?
Что то типа такого.
PHP:
Expand Collapse Copy
/////////////////////////////////////////////////////////////////////////////////// 
void martini_f()
{
int nor_lot;
if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.1) nor_lot=1;
if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.01) nor_lot=2;

CountOpenPositions();

double Mar_Lot_b=Lot*buy*Lot_koef;
double Mar_Lot_s=Lot*sell*Lot_koef;

 for(int i=OrdersTotal()-1; i>=0; i--)
 {
   OrderSelect(i,SELECT_BY_POS);
   {
   if(OrderMagicNumber()==magic)
   {
   if(OrderSymbol()==Symbol())
   {
   break; 
   } 
   }              
   }
   }
   while(IsTradeContextBusy()) Sleep(1000);
   
   
   if(OrderType()==OP_BUY)
   {
   //
   if(Bid<=OrderOpenPrice()-step*Point) 
   
   int ticket_op_m=-1;
   
   for (int j_op_b = 0; j_op_b < MaxAttempts; j_op_b++)
 {
 while(IsTradeContextBusy()) Sleep(1000);
                             
 if(Sig_p>0 && buy==0)  ticket_op_m=OrderSend(Symbol(),OP_BUY,NormalizeDouble(Mar_Lot_b,nor_lot),Ask,slippage,0,0,comment,magic,0,Green);
 if(ticket_op_m>-1)break;
 }
   
   } 
        
        
   if(OrderType()==OP_SELL)
   {
   //
   if(Ask>=OrderOpenPrice()+step*Point) 
   
   ticket_op_m=-1;
   
    for (int j_op_s = 0; j_op_s < MaxAttempts; j_op_s++)
 {
 while(IsTradeContextBusy()) Sleep(1000);
                             
 if(Sig_p<0 && sell==0) ticket_op_m=OrderSend(Symbol(),OP_SELL,NormalizeDouble(Mar_Lot_s,nor_lot),Bid,slippage,0,0,comment,magic,0,OrangeRed);
 if(ticket_op_m>-1)break;
 }
   
   }
         
  
 
}

////////////////////////////////////////////////////////////////////////////////////
void CountOpenPositions()
{
buy=0;
sell=0;

for (int i=OrdersTotal()-1; i>=0; i--)
 {
   OrderSelect(i,SELECT_BY_POS);
   {
   if(OrderMagicNumber()==magic)
   {        
   if(OrderType()==OP_BUY)      buy++;
   if(OrderType()==OP_SELL)     sell++; 
   }              
   }
 }

}
 

Айбек

Активный участник
extern double LotProc =2;

//+------------
int start(){
if(LotProc>0)Lot=NormalizeDouble(AccountBalance()/100*LotProc/(MarketInfo(Symbol(),MODE_TICKVALUE)*100*D),2);
if (Lot<MarketInfo(Symbol(),MODE_MINLOT))Lot=MarketInfo(Symbol(),MODE_MINLOT);
 

Айбек

Активный участник
Лот увеличивается при росте депо, уменьшается при убытке)
Щас стоит 2 процента от депо...
 

sochinik

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







//+------------------------------------------------------------------+
//| Советник по индюкам.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
extern int MagicNumber = 1975;
string GV_SIGNAL;
int SIGNAL;
int init()

{
GV_SIGNAL = StringConcatenate(Symbol()," ",StrPer(Period())," SIGNAL");
GlobalVariableSet(GV_SIGNAL,0);
}
int start()
{

if (GlobalVariableCheck(GV_SIGNAL)) SIGNAL=GlobalVariableGet(GV_SIGNAL);

if (OrdersTotal()==0 && SIGNAL==1 /*&& OrderSymbol()==Symbol()*/ ) OrderSend (Symbol(),OP_BUY ,0.5,Ask,50,NULL,NULL,"SELL",MagicNumber,0,Red);


if (OrdersTotal()==0 && SIGNAL==-1 /*&& OrderSymbol()==Symbol()*/ ) OrderSend (Symbol(),OP_SELL ,0.5,Bid,50,NULL,NULL,"SELL",MagicNumber,0,Red);

//----




//----
return(0);
}
//+--

string StrPer(int per)
{
if (per == 1) return("M1");
if (per == 5) return("M5");
if (per == 15) return("M15");
if (per == 30) return("M30");
if (per == 60) return("H1");
if (per == 240) return("H4");
if (per == 1440) return("D1");
if (per == 10080) return("W1");
if (per == 43200) return("MN1");
return("ошибка периода");
}
 

Вложения

eevviill

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

sochinik

Местный житель
Попробуй перенести то что в Инит в Старт.

Я плохо даже понимаю , что это за функция, но она передаёт сигнал с индюка в советник, ( эту функцию мне подсказал программист)и если я её переношу в старт, то советник пишет ошибку, а в таком виде как у меня - работает и даже при тестирование я в + .....

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

Я понимаю что задумал сложный советник, но ради этой мечты я и изучаю программирование...

Вообще то я просил на форуме создать советника по сигналам подобных индюков- если бы были варианты такого решения, то мне было бы легче найти приемлемый вариант, но в данный момент я ищу вариант открытия ордеров...( ДАЖЕ ПРИ ТЕСТИРОВАНИЕ И РУЧНОМ ЗАКРЫТТИИ У МЕНЯ СЕЙЧАС НА СЧЁТЕ ПОЛОЖИТЕЛЬНЫЙ ПРОФИТ). так что идея я уверен верная...
 
Последнее редактирование:

zis

Активный участник
SOS! Вдруг перестал работать тестер стратегий! Когда включаю на цене появляется надпись "ждите обновления" и больше ничего не происходит!!! Может я случайно снёс что-то из терминала? Кто-нибудь подскажет?
 

SKALMI

**********
SOS! Вдруг перестал работать тестер стратегий! Когда включаю на цене появляется надпись "ждите обновления" и больше ничего не происходит!!! Может я случайно снёс что-то из терминала? Кто-нибудь подскажет?
Самый простой способ,чтобы не лезть в дебри.
Старый в корзину и загрузить новый.
 
  • Like
Реакции: zis

shymaser

Элитный участник
Спасибо! Если не предложит кто более короткого способа, придётся так и сделать...

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

zis

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

Снёс терминал, установил по новой... не работает тестер!:question:
 

hiys

Гуру форума

Вложения

  • Like
Реакции: zis

hoz

Активный участник
Я понимаю что задумал сложный советник, но ради этой мечты я и изучаю программирование...

Вообще то я просил на форуме создать советника по сигналам подобных индюков- если бы были варианты такого решения, то мне было бы легче найти приемлемый вариант, но в данный момент я ищу вариант открытия ордеров...( ДАЖЕ ПРИ ТЕСТИРОВАНИЕ И РУЧНОМ ЗАКРЫТТИИ У МЕНЯ СЕЙЧАС НА СЧЁТЕ ПОЛОЖИТЕЛЬНЫЙ ПРОФИТ). так что идея я уверен верная...

А кто сказал что у тебя сложный сов? Ты бы сказал на чём основаны сигналы твоего сова и какими ордерами он бдует торговать (маркерт ордера или отложенные .. (стоповые или лимитники)), а тогда можно и поговорить о написании сова.
Я на данный момент занят написанием, действительно, сложноватого совка, и, поэтому не кинулся б писать что попало. Но если б увидел перспективу в чём-то, можно и сделать.
 

sochinik

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

Буду рад если кто заинттересуется создать совместный советник- я понимаю уже язык программирования, но так как практика 0 не могу переложить свои мысли в функции...
 

hoz

Активный участник
В принципе, как освобожусь, можно будет взяться. У меня щяс у самого головняк. Сложноватую задачу я решил реализовать.
 

sochinik

Местный житель
А нет ли работающего учебного МТ4 у какого либо брокера в выходные дни, так как я пока сложно понимаю процедуру написанияя функций- и стараюсь проводить проверку сразу же на терминале, а в данной ситуации выходит простой в субботу- воскресенье....
Если бы была бы демка работающая у какого то ДЦ было бы классно...

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