懂心无言
发表于 2018-8-18 13:35:06
能看到下载地址或
Crover
发表于 2018-8-18 20:43:50
66666666666666
英利
发表于 2018-8-18 20:45:21
看看看看看看看看
山东黄金李长明
发表于 2018-8-18 22:55:00
7575755555
晒太阳的鱼
发表于 2018-8-22 21:28:19
abo6abo
发表于 2018-8-24 21:14:57
看看
{:132_123:}看看
{:132_157:}看看
machi
发表于 2018-8-26 15:24:00
machimachimachi
yxw
发表于 2018-9-1 23:31:30
看看好东西么
shangema
发表于 2018-9-2 00:27:10
//+------------------------------------------------------------------+
//| exp_multic.mq5 |
//| Copyright 2012-2016, DC2008 |
//| http://www.mql5.com/ru/users/dc2008 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012-2016, DC2008"
#property link "http://www.mql5.com/ru/users/dc2008"
#property version "1.00"
#property description "Expert implements the strategy of multi-currency trading"
#property description "without using technical analysis indicators"
//---
#include <Trade\Trade.mqh>
//---
#define EURUSD "EURUSD"
#define GBPUSD "GBPUSD"
#define USDJPY "USDJPY"
#define USDCHF "USDCHF"
#define USDCAD "USDCAD"
#define AUDUSD "AUDUSD"
#define EURGBP "EURGBP"
#define EURJPY "EURJPY"
#define EURAUD "EURAUD"
#define GBPJPY "GBPJPY"
//---
MqlTick last_tick;
CTradetrade;
//---
input int loss=1900; // убыток в валюте депозита
input int profit=4000; // прибыль в валюте депозита
input int margin=5000; // минимальный размер депозита, при котором возможна торговля
input double minLot=0.01; // минимальный объём позиции
input int k_change=2100; // коэффициент для расчёта убытка при изменении позиции
input int k_closse=4600; // коэффициент для расчёта прибыли при закрытии позиции
//---
stringvaluta=
{
EURUSD,
GBPUSD,
USDJPY,
USDCHF,
USDCAD,
AUDUSD,
EURGBP,
EURJPY,
EURAUD,
GBPJPY
};
int N; // количество валютных пар
bool Type; // направление торговли для каждой валютной пары: BUY или SELL
double Lot; // размер лота для каждой валютной пары
string main_comment;// строка комментария
bool on_trade; // разрешаем или запрещаем торговлю
double realEquity; // стартовый баланс
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Comment("");
realEquity=AccountInfoDouble(ACCOUNT_BALANCE);
main_comment="exp_multic: ";
N=ArraySize(valuta);
on_trade=true;
for(int i=0;i<N; i++)
{
Type=true;
Lot=minLot;
}
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double Balans=AccountInfoDouble(ACCOUNT_BALANCE);
double Equity=AccountInfoDouble(ACCOUNT_EQUITY);
double FreeMargin=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
Comment("Стартовый баланс: ",NormalizeDouble(realEquity,2),
"\n","Текущий баланс: ",NormalizeDouble(Balans,2),
"\n","Результат торговли робота: ",NormalizeDouble(Balans-realEquity,2));
//---
if(Balans-Equity>loss) on_trade=false; // при достижении заданного убытка все позиции закрываются
if(Equity-Balans>profit) on_trade=false;// при достижении заданной прибыли все позиции закрываются
//--- Закрытие всех позиций принудительно
if(!on_trade)
{
for(int i=0;i<N; i++)
{
trade.PositionClose(valuta);
Lot=minLot;
}
on_trade=true;
}
//---
if(on_trade)
{
for(int i=0;i<N; i++)
{
if(PositionSelect(valuta))
{
//--- Если позиция прибыльная, то наращиваем объём
if(PositionGetDouble(POSITION_PROFIT)>Lot*k_change)
{
Lot=Lot+minLot;
double lot=minLot;
if(Type)
{
SymbolInfoTick(valuta,last_tick);
double price=last_tick.ask;
trade.PositionOpen(valuta,ORDER_TYPE_BUY,NormalizeDouble(lot,2),price,0,0,main_comment+valuta);
}
else
{
SymbolInfoTick(valuta,last_tick);
double price=last_tick.bid;
trade.PositionOpen(valuta,ORDER_TYPE_SELL,NormalizeDouble(lot,2),price,0,0,main_comment+valuta);
}
}
//--- Если позиция убыточная, то закрываем её и даём команду на разворот
if(PositionGetDouble(POSITION_PROFIT)<-Lot*k_change)
{
Type=!Type;
trade.PositionClose(valuta);
}
//--- Закрываем прибыльную позицию
if(PositionGetDouble(POSITION_PROFIT)>minLot*k_closse)
trade.PositionClose(valuta);
}
//--- Открытие новых позиций
if(!PositionSelect(valuta) && FreeMargin>margin)
{
Lot=minLot;
double lot=minLot;
if(Type)
{
SymbolInfoTick(valuta,last_tick);
double price=last_tick.ask;
trade.PositionOpen(valuta,ORDER_TYPE_BUY,NormalizeDouble(lot,2),price,0,0,main_comment+valuta);
}
else
{
SymbolInfoTick(valuta,last_tick);
double price=last_tick.bid;
trade.PositionOpen(valuta,ORDER_TYPE_SELL,NormalizeDouble(lot,2),price,0,0,main_comment+valuta);
}
}
}
}
}
//+------------------------------------------------------------------+
course
发表于 2018-9-3 14:21:08
这个不知道能不能有用