Мультивалютник с автодобавлением символов в окно „Обзор рынка“ |
int trade[1];
string symbols[1];
if(Symbol1!="")
{
ArrayResize(symbols,1);
ArrayResize(trade,1);
symbols[0]=Symbol1;
trade[0]=Symbol1Trade;
}
if(Symbol2!="")
{
ArrayResize(symbols,2);
ArrayResize(trade,2);
symbols[1]=Symbol2;
trade[1]=Symbol2Trade;
}
if(Symbol3!="")
{
ArrayResize(symbols,3);
ArrayResize(trade,3);
symbols[2]=Symbol3;
trade[2]=Symbol3Trade;
}
if(Symbol4!="")
{
ArrayResize(symbols,4);
ArrayResize(trade,4);
symbols[3]=Symbol1;
trade[3]=Symbol1Trade;
}
if(Symbol5!="")
{
ArrayResize(symbols,5);
ArrayResize(trade,5);
symbols[4]=Symbol2;
trade[4]=Symbol2Trade;
}
if(Symbol6!="")
{
ArrayResize(symbols,6);
ArrayResize(trade,6);
symbols[5]=Symbol3;
trade[5]=Symbol3Trade;
}
if(Symbol7!="")
{
ArrayResize(symbols,7);
ArrayResize(trade,7);
symbols[6]=Symbol1;
trade[6]=Symbol1Trade;
}
if(Symbol8!="")
{
ArrayResize(symbols,8);
ArrayResize(trade,8);
symbols[7]=Symbol2;
trade[7]=Symbol2Trade;
}
if(Symbol9!="")
{
ArrayResize(symbols,9);
ArrayResize(trade,9);
symbols[8]=Symbol3;
trade[8]=Symbol3Trade;
}
// очистим окно обзор рынка
for(int i=0;i<SymbolsTotal(true);i++)
{
SymbolSelect(SymbolName(i,true),false);
}
for(int i=0;i<ArraySize(symbols);i++)
{
SymbolSelect(symbols[i],true);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(string symb,int type)
{
int r=0;
color clr=Green;
double price=0;
if(type==1)
{
clr=Red;
price=MarketInfo(symb,MODE_BID);
}
if(type==0)
{
clr=Blue;
price=MarketInfo(symb,MODE_ASK);
}
r=OrderSend(symb,type,Lots,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double AllProfit()
{
double pr=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber()==Magic)
{
if(OrderType()<2) pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
return(pr);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades(string symbol)
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symbol && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера |
//+------------------------------------------------------------------+
void CloseAll(string symb)
{
bool cl;
double bid=MarketInfo(symb,MODE_BID);
double ask=MarketInfo(symb,MODE_ASK);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symb && OrderMagicNumber()==Magic)
{
if(OrderType()==0)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(bid,Digits),Slip,White);
}
if(OrderType()==1)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Trade(string symb,int type)
{
if(CountTrades(symb)<1) PutOrder(symb,type);
if(AllProfit()>Profit || AllProfit()<-Loss) CloseAll(symb);
}
void OnTick()
{
string s="";
for(int i=0;i<ArraySize(symbols);i++)
{
if(symbols[i]!="") s+="\n "+symbols[i];
Trade(symbols[i],trade[i]);
}
Comment("\n Symbols Count: ",ArraySize(symbols),s,
"\n All Profit: ",AllProfit());
}
//+------------------------------------------------------------------+
//| MultySymbols.mq4 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
input string Symbol1 = "CADCHF"; // Symbol1 Name
input int Symbol1Trade = 0; // 0-Buy 1-Sell
input string Symbol2 = "GBPJPY"; // Symbol2 Name
input int Symbol2Trade = 0; // 0-Buy 1-Sell
input string Symbol3 = "NZDUSD"; // Symbol3 Name
input int Symbol3Trade = 0; // 0-Buy 1-Sell
input string Symbol4 = ""; // Symbol4 Name
input int Symbol4Trade = 0; // 0-Buy 1-Sell
input string Symbol5 = ""; // Symbol5 Name
input int Symbol5Trade = 0; // 0-Buy 1-Sell
input string Symbol6 = ""; // Symbol6 Name
input int Symbol6Trade = 0; // 0-Buy 1-Sell
input string Symbol7 = ""; // Symbol7 Name
input int Symbol7Trade = 0; // 0-Buy 1-Sell
input string Symbol8 = ""; // Symbol8 Name
input int Symbol8Trade = 0; // 0-Buy 1-Sell
input string Symbol9 = ""; // Symbol9 Name
input int Symbol9Trade = 0; // 0-Buy 1-Sell
input double Lots = 0.1; // лот
input double Profit = 20; // лось в рублях
input double Loss = 5000; // язь в рублях
input int Slip = 30; // реквот
input int Magic = 333; // магик
int trade[1];
string symbols[1];
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
if(Symbol1!="")
{
ArrayResize(symbols,1);
ArrayResize(trade,1);
symbols[0]=Symbol1;
trade[0]=Symbol1Trade;
}
if(Symbol2!="")
{
ArrayResize(symbols,2);
ArrayResize(trade,2);
symbols[1]=Symbol2;
trade[1]=Symbol2Trade;
}
if(Symbol3!="")
{
ArrayResize(symbols,3);
ArrayResize(trade,3);
symbols[2]=Symbol3;
trade[2]=Symbol3Trade;
}
if(Symbol4!="")
{
ArrayResize(symbols,4);
ArrayResize(trade,4);
symbols[3]=Symbol1;
trade[3]=Symbol1Trade;
}
if(Symbol5!="")
{
ArrayResize(symbols,5);
ArrayResize(trade,5);
symbols[4]=Symbol2;
trade[4]=Symbol2Trade;
}
if(Symbol6!="")
{
ArrayResize(symbols,6);
ArrayResize(trade,6);
symbols[5]=Symbol3;
trade[5]=Symbol3Trade;
}
if(Symbol7!="")
{
ArrayResize(symbols,7);
ArrayResize(trade,7);
symbols[6]=Symbol1;
trade[6]=Symbol1Trade;
}
if(Symbol8!="")
{
ArrayResize(symbols,8);
ArrayResize(trade,8);
symbols[7]=Symbol2;
trade[7]=Symbol2Trade;
}
if(Symbol9!="")
{
ArrayResize(symbols,9);
ArrayResize(trade,9);
symbols[8]=Symbol3;
trade[8]=Symbol3Trade;
}
// очистим окно обзор рынка
for(int i=0;i<SymbolsTotal(true);i++)
{
SymbolSelect(SymbolName(i,true),false);
}
// заполним символами из советника
for(int i=0;i<ArraySize(symbols);i++)
{
SymbolSelect(symbols[i],true);
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(string symb,int type)
{
int r=0;
color clr=Green;
double price=0;
if(type==1)
{
clr=Red;
price=MarketInfo(symb,MODE_BID);
}
if(type==0)
{
clr=Blue;
price=MarketInfo(symb,MODE_ASK);
}
r=OrderSend(symb,type,Lots,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double AllProfit()
{
double pr=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber()==Magic)
{
if(OrderType()<2) pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
return(pr);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades(string symbol)
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symbol && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера |
//+------------------------------------------------------------------+
void CloseAll(string symb)
{
bool cl;
double bid=MarketInfo(symb,MODE_BID);
double ask=MarketInfo(symb,MODE_ASK);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==symb && OrderMagicNumber()==Magic)
{
if(OrderType()==0)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(bid,Digits),Slip,White);
}
if(OrderType()==1)
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Trade(string symb,int type)
{
if(CountTrades(symb)<1) PutOrder(symb,type);
if(AllProfit()>Profit || AllProfit()<-Loss) CloseAll(symb);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
string s="";
for(int i=0;i<ArraySize(symbols);i++)
{
if(symbols[i]!="") s+="\n "+symbols[i];
Trade(symbols[i],trade[i]);
}
Comment("\n Symbols Count: ",ArraySize(symbols),s,
"\n All Profit: ",AllProfit());
}
//+------------------------------------------------------------------+
17 сентября 2016
|
25 декабря 2016
|
Комментарии (2)
2 Hi-Fi Сообщений: 1
0 BuTacuk Сообщений: 1
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий