externint stoploss=20; externint takeprofit=50; // если stoploss и / или takeprofit = 0, то отключены. //if stoploss and/or takeprofit = 0, are disconnected.
externint Magic = 99999999; // уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными externint Slipp = 1; // величина максимально возможного проскальзывания. // slippage externint sec = 2000; // количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи // number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure
//============================= Stochastic inputint InpKPeriod=13; // K Period inputint InpDPeriod=3; // D Period inputint InpSlowing=3; // Slowing
//============================= Stochastic inputint InpKPeriod1=13; // K Period inputint InpDPeriod1=3; // D Period inputint InpSlowing1=3; // Slowing
你必须按价格排序,因为你不能按尺寸搜索,网格可能是不同的,你会找到最大的或最小的,但不是第一个也不是最后一个。
我指的是玛丽娜发布的功能。
最后的顺序是 由时间决定的。
我指的是玛丽娜发布的功能。
最后的顺序是 由时间决定的。
因为我是这样召唤的
亲爱的程序员!帮助我解决这个问题。专家顾问在M15上进入交易,但也从H1上获取条件。当H1的条件在M15上得到满足时,可能会有几个进入点。事实上,问题是我只想使用第一个入口点,直到H1的条件被逆转。
k=0;
for (i=OrdersTotal()-1;i>=0;i-)
{
RefreshRates();
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // 购买
亲爱的程序员!帮助我解决这个问题。专家顾问在M15上进入交易,但也从H1上获取条件。当H1的条件在M15上得到满足时,可能会有几个进入点。实际上,问题是我想限制第一个进入点,直到H1上的条件没有改变成相反的。
k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates()。
如果(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // 购买
但如果没有代码呢?特别是,代码并不清晰。
你到底想要什么?不是抽象的,而是你想得到的确切的东西。
亲爱的程序员!帮助我解决这个问题。专家顾问在M15上进入交易,但也从H1上获取条件。当H1的条件在M15上得到满足时,可能会有几个进入点。实际上,问题是我想把自己限制在第一个入口点,而在H1上,条件并没有改变,而是相反。
k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates()。
如果(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // 购买
一个近似的算法。
bool flagH1 = true;
bool flagM15 = true;
if(!flag && flagH1 && flagM15)
{
flag = true;
}
if(!flagH1 && flag)
flag = false;
而没有密码呢?更有理由不理解这些代码。
你到底想要什么?不是抽象的,而是你想得到的确切的东西。
extern double Lot= 0.1;
extern int stoploss=20;
extern int takeprofit=50;
// если stoploss и / или takeprofit = 0, то отключены.
//if stoploss and/or takeprofit = 0, are disconnected.
extern int Magic = 99999999;
// уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 1;
// величина максимально возможного проскальзывания.
// slippage
extern int sec = 2000;
// количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи
// number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure
//============================= Stochastic
input int InpKPeriod=13; // K Period
input int InpDPeriod=3; // D Period
input int InpSlowing=3; // Slowing
//============================= Stochastic
input int InpKPeriod1=13; // K Period
input int InpDPeriod1=3; // D Period
input int InpSlowing1=3; // Slowing
int A, a, b, i, ii, o;
double SL, TP, op, stH0, stH1, stM0, stM1;
bool c;
datetime OldTime, Time0, opp;
int init()
{
OldTime = iTime(NULL,Period(),0);
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//====================================================================
stH0 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,0);
stH1 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,1);
stM0 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,0);
stM1 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,1);
//====================================================================
b=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && b==0 && opp != Time[0]) // покупка
{
opp = Time[0];
RefreshRates();
op = Ask;
A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
o = GetLastError();
while (A < 0 && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
op = Ask;
A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
o = GetLastError();
}
SL = op-stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op+takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
if (SL != 0 || TP != 0)
{
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
while (c == false && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
} }
}
//---------------------------------------------------------------------------------------------------------+
b=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 >= 80 && stM0 < 80 && stH0 < 30 && b==0 && opp != Time[0]) // продажа
{
opp = Time[0];
RefreshRates();
op = Bid;
A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
o = GetLastError();
while (A < 0 && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
op = Bid;
A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
o = GetLastError();
}
SL = op+stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op-takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
if (SL != 0 || TP != 0)
{
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
while (c == false && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
} }
}
return(0);
}
//+------------------------------------------------------------------+
Artyom你好!我们的目标是,只要H1有信号,就把M15的入场次数限制在一次(第一个信号)。
你好,亲爱的论坛成员。有没有办法从EA中设置Metatrader4内置的追踪止损值?我对这一点感兴趣,而不是在专家顾问中添加执行独立于内置跟踪止损的代码。
提前感谢您的回答。
你好,亲爱的论坛成员。有没有办法从EA内部设置Metatrader4内置的追踪止损的值?我对这一点感兴趣,而不是在EA中添加一个独立于内置跟踪止损的执行代码。
提前感谢您的回答。