Помощь в программирование. | Trading Go - Форекс советники, индикаторы и скрипты.
  • Форум восстановлен и работает стабильно!
    Но если что то не отображается нажмите Ctrl+F5
    Благодарим Вас за Ваше Внимание и Понимание!!!
  • Уважаемый гость! Чтобы просмотреть скрытую часть информации Вам нужно зарегистрироваться.

    Быстрая регистрация!

Помощь в программирование.

jenek769

Участник
Регистрация
28 Апр 2018
Сообщения
3
Благодарностей
0
Автор темы #1
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//---
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//--- return orders volume
if(buys>0) return(buys);
else return(-sells);
}

Что в коде поменять чтоб больше ордеров открывалось в терминале?
 

Admin

Команда форума
Администратор
Регистрация
3 Янв 2013
Сообщения
1.981
Благодарностей
440
#2
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//---
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//--- return orders volume
if(buys>0) return(buys);
else return(-sells);
}

Что в коде поменять чтоб больше ордеров открывалось в терминале?
В этом коде мало что либо менять, нужно менять чуть больше логики все й программы ...
попробуйте так
if(buys>1) return(buys);
else return(-sells);
 

jenek769

Участник
Регистрация
28 Апр 2018
Сообщения
3
Благодарностей
0
Автор темы #3
Так я уже пробыл. Тогда вот весь код советника. Конечно переделка из стандартного мувинг аверйндж с терминала мт4.

Стратегия такова на средне скользящих. При 1-ом пересечение МА1 с МА2 открываем BUY и SELL. при 2-ом пересечение закрываем BUY(SELL) и тут же сразу открываем снова BUY и SELL. При 3-им пересечение закрываем SELL(BUY) и тут же сразу открываем снова BUY и SELL. И так далее. У меня только выходит так: открыли BUY и SELL, на 2-ом закрыли BUY и уже на 3-м закрывается SELL и только тут снова открываться BUY и SELL.

#property copyright "jenek769"
#property link "jenek769.ru"
#property description "buy_sell, close peresechenie 2x - !MA!"

#define MAGICMA 26042018
//----------------- Настройка----------------
input double Lots =1;

input int MovingPeriod2 =1;
input int MovingShift2 =0;
//---------------------------------
input int MovingPeriod3 =1;
input int MovingShift3 =100;

//+------------------------------------------------------------------+
//| Calculate open positions |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//---
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//--- retur orders volume
if(buys>0) return(buys);
else return(-sells);

//if(sells>0) return(buys);
//else return(sells);
}
//|--------------------открытие сделок-------------------------------|
void CheckForOpen()
{
// double ma;
double ma70;
double ma50;
int res;
//--- go trading only for first tiks of new bar
if(Volume[0]>1) return;

//--------------- настройка мувинга для открытия сделок----------------------------------
ma70=iMA(NULL,0,MovingPeriod2,MovingShift2,MODE_SMMA,PRICE_CLOSE,0);
ma50=iMA(NULL,0,MovingPeriod3,MovingShift3,MODE_SMMA,PRICE_CLOSE,0);
//---------------------------------------------------------------------------------------
if(ma70>ma50)
{
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"vxod_V_1.2",MAGICMA,0,Red);
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"vxod_V_1.2",MAGICMA,0,Blue);
return;
}

//----------------------------------------------------------------------------------------
if(ma70<ma50)
{
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"vxod_V_1.2",MAGICMA,0,Blue);
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"vxod_V_1.2",MAGICMA,0,Red);
return;
}
}
//| ---------------------закрытие сделок-----------------------------|
void CheckForClose()
{
double ma71;
double ma51;
//--- go trading only for first tiks of new bar
if(Volume[0]>1) return;
//--------------- настройка мувинга для закрытие-------------------------
ma71=iMA(NULL,0,MovingPeriod2,MovingShift2,MODE_SMMA,PRICE_CLOSE,0);
ma51=iMA(NULL,0,MovingPeriod3,MovingShift3,MODE_SMMA,PRICE_CLOSE,0);
//----------------------------------------------------------------------
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//----------------- закрытие покупки---------------------------
if(OrderType()==OP_BUY)
{
if(ma71<ma51)
{
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
Print("OrderClose error ",GetLastError());
}
break;
}
//----------------- закрытие продажи---------------------------
if(OrderType()==OP_SELL)
{
if(ma71>ma51)
{
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
Print("OrderClose error ",GetLastError());
}
break;
}
}
}
//| OnTick function |
void OnTick()
{
//--- check for history and trading
if(Bars<100 || IsTradeAllowed()==false)
return;
//--- calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//---
}
 
Теги Нет
Сверху