도움이 필요합니다 - 역전 중지 - 3개의 주문이 있지만 비디오 자습서에서 후행하는 예 :) 관련 없는 주문에 대해서만, 그러나 저에게는 알고리즘으로 연결되어 있습니다. 즉, 이익을 취하는 것은 3개의 주문의 합으로 계산됩니다. , 또는 트렌드에 즉시 도달하는 경우 하나입니다. 글쎄, 나는 뭔가를 생각해 냈지만 고문은 더 많이 벌지 않았습니다. 그는 같은 금액을 벌기 시작했지만 후행없이 이전 거래와 비교하여 2-3 배 적은 거래를 얻습니다. 일반적으로 나는 후행이 없지만 일종의 탁도가 있습니다. 관련 주문에 대해 어떻게 할 수 있습니까? 누가 나에게 아이디어를 줄 수 있습니까? 나는 다른 것을 생각해내지 못할 것 같습니다. 여기 내 "후행"의 결과가 있습니다. 파란색으로 강조 표시되어 있습니다.
1번 테스트 결과를 첨부합니다. 후행 정지가 있습니까? 이해가 안 됩니다. 같은 기간 이익이 증가하지 않은 이유는 무엇입니까? 그리고 거래건수 만 2~3배 줄었나요?
//+------------------------------------------------------------------+
//| BLACKJACK&HOOKERS TrailX.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double Lots = 0.01;
extern int TakeProfit = 5;
extern int Step = 2;
extern int TrailingStep = 3;
extern int TrailingStop = 1;
extern int MaPeriod = 200;
extern int MaShift = 1;
extern int Magic = 123;
extern int Slippage = 5;
int timeprev=0;
extern double price,op,cn,tp;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(Digits == 3 || Digits == 5)
TakeProfit *= 10;
Step *= 10;
TrailingStep *= 10;
TrailingStop *= 10;
Slippage *= 10;
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{ if (timeprev == Time[0]) return;
timeprev = Time[0];
double maprice=iMA(Symbol(),0,MaPeriod,MaShift,MODE_SMA,PRICE_CLOSE,1);
op=CalculateProfit();
cn=CountTrades();
tp=TakeProfit;
if(tp>TakeProfit)
{
TakeProfit+=tp;
}
if (cn==0 && CountBuy() + CountSell() == 0 && Ask > maprice)
{
if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
Print("Не удалось открыть ордер на покупку");
}
if (cn==0 && CountBuy() + CountSell() == 0 && Bid < maprice)
{
if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
Print("Не удалось открыть ордер на продажу");
}
if(cn==1 && CountBuy()==1)//CountBuy()==1 &&
{
price=FindLastBuyPrice();
if((price-Ask)>=Step*Point)
{
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1)
Print("Не удалось открыть ордер на продажу");
}
}
else if(cn==1 && CountSell()==1)//CountSell()==1 &&
{
price=FindLastSellPrice();
if((Bid-price)>=Step*Point)
{
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1)
Print("Не удалось открыть ордер на покупку");
}
}
if(cn==2 && CountBuy()==1 && CountSell()==1)//CountBuy() + CountSell()==2 &&
{
price=FindLastSellPrice();
if((price-Bid)>=Step*Point)
{
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1)
Print("Не удалось открыть ордер на продажу");
}
else
price=FindLastSellPrice();
if((Bid-price)>=Step*Point)
{
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1)
Print("Не удалось открыть ордер на покупку");
}
}
else if(cn==2 && CountSell()==1 && CountBuy()==1)//CountSell() + CountBuy()==2 &&
{
price=FindLastBuyPrice();
if((Ask-price)>=Step*Point)
{
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1)
Print("Не удалось открыть ордер на продажу");
}
else
price=FindLastBuyPrice();
if((price-Ask)>=Step*Point)
{
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1)
Print("Не удалось открыть ордер на покупку");
}
}
Trailing();
if (op>=tp)
{
CloseAll();
}
}
//---------------------------------------------------------------------------------------
// double Equity() //или OrderProfit() - эти идеи в работе и задуманы как автоподбор лота (без мартингейла) для снижения рисков от контрдвижения (интервенций) рынка
// {
// double eqv=0;
// eqv+=AccountEquity();
// return(eqv);
// }
//---------------------------------------------------------------------------------------
void Trailing()
{
for (int i=OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
price=FindLastBuyPrice();
if (Bid - price > (TakeProfit+TrailingStep)*Point)
{
{
tp=NormalizeDouble((TakeProfit+TrailingStep)*Point, Digits);
}
}
if (price - (TakeProfit-TrailingStop)*Point < Bid - (TakeProfit+TrailingStep)*Point)
{
{
tp=NormalizeDouble((TakeProfit-TrailingStop)*Point, Digits);
}
}
}
if (OrderType() == OP_SELL)
{
price=FindLastSellPrice();
if (price - Ask > (TakeProfit+TrailingStep)*Point)
{
{
tp=NormalizeDouble((TakeProfit+TrailingStep)*Point, Digits);
}
}
if (price - (TakeProfit-TrailingStop)*Point > Ask + (TakeProfit+TrailingStep)*Point)
{
{
tp=NormalizeDouble((TakeProfit-TrailingStop)*Point, Digits);
}
}
}
}
}
}
}
//---------------------------------------------------------------------------------------
double CalculateProfit()
{
double oprofit=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
oprofit+=OrderProfit();
}
}
}
}
return(oprofit);
}
//--------------------------------------------------------------------------------------
void CloseAll()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage))
Print("Не удалось закрыть ордер на покупку");
}
if(OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage))
Print("Не удалось закрыть ордер на продажу");
}
}
}
}
}
//---------------------------------------------------------------------------------------------------
double FindLastBuyPrice()
{
int oldticket,ticket= 0;
double oldopenprice = 0;
for(int cnt=OrdersTotal()-1; cnt>=0; cnt--)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
{
oldticket=OrderTicket();
if(oldticket>ticket)
{
ticket=oldticket;
oldopenprice=OrderOpenPrice();
}
}
}
}
return(oldopenprice);
}
//---------------------------------------------------------------------------------------------------
double FindLastSellPrice()
{
int oldticket,ticket= 0;
double oldopenprice = 0;
for(int cnt=OrdersTotal()-1; cnt>=0; cnt--)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
{
oldticket=OrderTicket();
if(oldticket>ticket)
{
ticket=oldticket;
oldopenprice=OrderOpenPrice();
}
}
}
}
return(oldopenprice);
}
//----------------------------------------------------------------------------------------------
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
count++;
}
}
return(count);
}
//----------------------------------------------------------------------------------------------
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
count++;
}
}
return(count);
}
//+---------------------------------------------------------------------------------+
int CountTrades()
{
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() == OP_BUY || OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//----------------------------------------------------------------------------------+
int FindLastOrderType()
{
for(int i = OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
return(OrderType());
}
}
return(-1);
}
//----------------------------------------------------------------------------------+
도움이 필요합니다 - 스탑 플립이 있습니다 - 3개의 주문이 있지만 후행 예는 관련 없는 주문에만 해당되지만 저에게는 알고리즘으로 연결되어 있습니다. 즉시 추세에 도달합니다. 글쎄, 나는 뭔가를 생각해 냈지만 고문은 더 많이 벌지 않았습니다. 그는 같은 금액을 벌기 시작했지만 후행없이 이전 거래와 비교하여 2-3 배 적은 거래를 얻습니다. 일반적으로 나는 후행이 없지만 일종의 탁도가 있습니다. 관련 주문에 대해 어떻게 할 수 있습니까? 누가 나에게 아이디어를 줄 수 있습니까? 나는 다른 것을 생각해 내지 않을 것 같아 두렵습니다. 여기 내 "후행"의 결과가 빨간색으로 강조 표시되어 있습니다.
친구, 저는 MQL4를 배우고 있으며 Lazy Trader 시스템에 대한 Expert Advisor를 작성 하기로 결정했습니다. Expert Advisor가 작성되었지만 제대로 작동하지 않습니다. 내가 보는 오류는 주문이 제 시간에 마감되지 않는다는 것입니다. 아마도 다른 오류가 있을 수 있습니다.
오류를 찾는 데 도움을 주고 표시되는 코드에 대한 피드백을 제공하세요.
다음은 내가 Expert Advisor를 작성한 시스템의 규칙입니다.
1/ 주의 시작에 우리는 첫 4시간 촛불의 마감을 기다립니다. 2/ 보류 중인 매수 스탑 및 매도 스탑 주문은 이 양초의 고점보다 20핍, 저점보다 20핍 낮습니다. 3/ 손절매는 반대의 수준에 놓입니다. 이익실현이 설정되지 않았습니다. 4/ 주문이 손절매와 같은 이익에 도달하면 손절매를 손익분기점으로 이동합니다(포지션의 손절매를 시작 가격으로 이동). 5/ 1차 활성화 후 2차 주문, DO NOT DELETE! 6/ 주말에 손익에 관계없이 모든 주문을 삭제/닫습니다.
친구, 저는 MQL4를 배우고 있으며 Lazy Trader 시스템에 대한 Expert Advisor를 작성 하기로 결정했습니다. Expert Advisor가 작성되었지만 제대로 작동하지 않습니다. 내가 보는 오류는 주문이 제 시간에 마감되지 않는다는 것입니다. 아마도 다른 오류가 있을 수 있습니다.
오류를 찾는 데 도움을 주고 표시되는 코드에 대한 피드백을 제공하세요.
다음은 내가 Expert Advisor를 작성한 시스템의 규칙입니다.
1/ 한 주의 시작에 우리는 첫 4시간 촛불의 마감을 기다립니다. 2/ 보류 중인 매수 스탑 및 매도 스탑 주문은 이 양초의 고점보다 20핍, 저점보다 20핍 낮습니다. 3/ 손절매는 반대의 수준에 놓입니다. 이익실현이 설정되지 않았습니다. 4/ 주문이 손절매와 같은 이익에 도달하면 손절매를 손익분기점으로 이동합니다(포지션의 손절매를 시작 가격으로 이동). 5/ 1차 활성화 후 2차 주문, DO NOT DELETE! 6/ 주말에 손익에 관계없이 모든 주문을 삭제/닫습니다.
도와 주셔서 감사합니다:)
어드바이저 코드가 있는 파일을 첨부합니다
TimeHour ( TimeCurrent ()) == DayTimeClose
이러한 절대적인 평등은 극히 드물며, 주일이 23시에 마감되면 최소 15분 이상 일찍 주문을 마감하는 것이 좋습니다. 다른 오류는 찾아보지 않았습니다. 얼핏 보면 아주 깔끔하게 쓰여져 있다.
도움이 필요합니다 - 역전 중지 - 3개의 주문이 있지만 비디오 자습서에서 후행하는 예 :) 관련 없는 주문에 대해서만, 그러나 저에게는 알고리즘으로 연결되어 있습니다. 즉, 이익을 취하는 것은 3개의 주문의 합으로 계산됩니다. , 또는 트렌드에 즉시 도달하는 경우 하나입니다. 글쎄, 나는 뭔가를 생각해 냈지만 고문은 더 많이 벌지 않았습니다. 그는 같은 금액을 벌기 시작했지만 후행없이 이전 거래와 비교하여 2-3 배 적은 거래를 얻습니다. 일반적으로 나는 후행이 없지만 일종의 탁도가 있습니다. 관련 주문에 대해 어떻게 할 수 있습니까? 누가 나에게 아이디어를 줄 수 있습니까? 나는 다른 것을 생각해내지 못할 것 같습니다. 여기 내 "후행"의 결과가 있습니다. 파란색으로 강조 표시되어 있습니다.
1번 테스트 결과를 첨부합니다. 후행 정지가 있습니까? 이해가 안 됩니다. 같은 기간 이익이 증가하지 않은 이유는 무엇입니까? 그리고 거래건수 만 2~3배 줄었나요?
//+------------------------------------------------------------------+ //| BLACKJACK&HOOKERS TrailX.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern double Lots = 0.01; extern int TakeProfit = 5; extern int Step = 2; extern int TrailingStep = 3; extern int TrailingStop = 1; extern int MaPeriod = 200; extern int MaShift = 1; extern int Magic = 123; extern int Slippage = 5; int timeprev=0; extern double price,op,cn,tp; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(Digits == 3 || Digits == 5) TakeProfit *= 10; Step *= 10; TrailingStep *= 10; TrailingStop *= 10; Slippage *= 10; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if (timeprev == Time[0]) return; timeprev = Time[0]; double maprice=iMA(Symbol(),0,MaPeriod,MaShift,MODE_SMA,PRICE_CLOSE,1); op=CalculateProfit(); cn=CountTrades(); tp=TakeProfit; if(tp>TakeProfit) { TakeProfit+=tp; } if (cn==0 && CountBuy() + CountSell() == 0 && Ask > maprice) { if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0) Print("Не удалось открыть ордер на покупку"); } if (cn==0 && CountBuy() + CountSell() == 0 && Bid < maprice) { if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0) Print("Не удалось открыть ордер на продажу"); } if(cn==1 && CountBuy()==1)//CountBuy()==1 && { price=FindLastBuyPrice(); if((price-Ask)>=Step*Point) { if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1) Print("Не удалось открыть ордер на продажу"); } } else if(cn==1 && CountSell()==1)//CountSell()==1 && { price=FindLastSellPrice(); if((Bid-price)>=Step*Point) { if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1) Print("Не удалось открыть ордер на покупку"); } } if(cn==2 && CountBuy()==1 && CountSell()==1)//CountBuy() + CountSell()==2 && { price=FindLastSellPrice(); if((price-Bid)>=Step*Point) { if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1) Print("Не удалось открыть ордер на продажу"); } else price=FindLastSellPrice(); if((Bid-price)>=Step*Point) { if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1) Print("Не удалось открыть ордер на покупку"); } } else if(cn==2 && CountSell()==1 && CountBuy()==1)//CountSell() + CountBuy()==2 && { price=FindLastBuyPrice(); if((Ask-price)>=Step*Point) { if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1) Print("Не удалось открыть ордер на продажу"); } else price=FindLastBuyPrice(); if((price-Ask)>=Step*Point) { if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1) Print("Не удалось открыть ордер на покупку"); } } Trailing(); if (op>=tp) { CloseAll(); } } //--------------------------------------------------------------------------------------- // double Equity() //или OrderProfit() - эти идеи в работе и задуманы как автоподбор лота (без мартингейла) для снижения рисков от контрдвижения (интервенций) рынка // { // double eqv=0; // eqv+=AccountEquity(); // return(eqv); // } //--------------------------------------------------------------------------------------- void Trailing() { for (int i=OrdersTotal() -1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { price=FindLastBuyPrice(); if (Bid - price > (TakeProfit+TrailingStep)*Point) { { tp=NormalizeDouble((TakeProfit+TrailingStep)*Point, Digits); } } if (price - (TakeProfit-TrailingStop)*Point < Bid - (TakeProfit+TrailingStep)*Point) { { tp=NormalizeDouble((TakeProfit-TrailingStop)*Point, Digits); } } } if (OrderType() == OP_SELL) { price=FindLastSellPrice(); if (price - Ask > (TakeProfit+TrailingStep)*Point) { { tp=NormalizeDouble((TakeProfit+TrailingStep)*Point, Digits); } } if (price - (TakeProfit-TrailingStop)*Point > Ask + (TakeProfit+TrailingStep)*Point) { { tp=NormalizeDouble((TakeProfit-TrailingStop)*Point, Digits); } } } } } } } //--------------------------------------------------------------------------------------- double CalculateProfit() { double oprofit=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { oprofit+=OrderProfit(); } } } } return(oprofit); } //-------------------------------------------------------------------------------------- void CloseAll() { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage)) Print("Не удалось закрыть ордер на покупку"); } if(OrderType()==OP_SELL) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage)) Print("Не удалось закрыть ордер на продажу"); } } } } } //--------------------------------------------------------------------------------------------------- double FindLastBuyPrice() { int oldticket,ticket= 0; double oldopenprice = 0; for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) { oldticket=OrderTicket(); if(oldticket>ticket) { ticket=oldticket; oldopenprice=OrderOpenPrice(); } } } } return(oldopenprice); } //--------------------------------------------------------------------------------------------------- double FindLastSellPrice() { int oldticket,ticket= 0; double oldopenprice = 0; for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) { oldticket=OrderTicket(); if(oldticket>ticket) { ticket=oldticket; oldopenprice=OrderOpenPrice(); } } } } return(oldopenprice); } //---------------------------------------------------------------------------------------------- int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) count++; } } return(count); } //---------------------------------------------------------------------------------------------- int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) count++; } } return(count); } //+---------------------------------------------------------------------------------+ int CountTrades() { 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() == OP_BUY || OrderType() == OP_SELL) count++; } } return(count); } //----------------------------------------------------------------------------------+ int FindLastOrderType() { for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) return(OrderType()); } } return(-1); } //----------------------------------------------------------------------------------+
도움이 필요합니다 - 스탑 플립이 있습니다 - 3개의 주문이 있지만 후행 예는 관련 없는 주문에만 해당되지만 저에게는 알고리즘으로 연결되어 있습니다. 즉시 추세에 도달합니다. 글쎄, 나는 뭔가를 생각해 냈지만 고문은 더 많이 벌지 않았습니다. 그는 같은 금액을 벌기 시작했지만 후행없이 이전 거래와 비교하여 2-3 배 적은 거래를 얻습니다. 일반적으로 나는 후행이 없지만 일종의 탁도가 있습니다. 관련 주문에 대해 어떻게 할 수 있습니까? 누가 나에게 아이디어를 줄 수 있습니까? 나는 다른 것을 생각해 내지 않을 것 같아 두렵습니다. 여기 내 "후행"의 결과가 빨간색으로 강조 표시되어 있습니다.
누군가가 발보 형태로 배치된 코드를 이해할 것이라고 생각합니까?
어떻게 보여야 할까요? 글쎄, 나는 코드를 던질 수 없다. 그렇지 않으면 무엇이 무엇인지 명확하지 않을 것이다.
어떻게 보여야 할까요? 글쎄, 나는 코드를 던질 수 없다. 그렇지 않으면 무엇이 무엇인지 명확하지 않을 것이다.
적어도 다음과 같이:
적어도 다음과 같이:
누군가가 다시 했습니다. 그게 더 낫습니다. 감사합니다.
친구, 저는 MQL4를 배우고 있으며 Lazy Trader 시스템에 대한 Expert Advisor를 작성 하기로 결정했습니다.
Expert Advisor가 작성되었지만 제대로 작동하지 않습니다. 내가 보는 오류는 주문이 제 시간에 마감되지 않는다는 것입니다. 아마도 다른 오류가 있을 수 있습니다.
오류를 찾는 데 도움을 주고 표시되는 코드에 대한 피드백을 제공하세요.
다음은 내가 Expert Advisor를 작성한 시스템의 규칙입니다.
1/ 주의 시작에 우리는 첫 4시간 촛불의 마감을 기다립니다.
2/ 보류 중인 매수 스탑 및 매도 스탑 주문은 이 양초의 고점보다 20핍, 저점보다 20핍 낮습니다.
3/ 손절매는 반대의 수준에 놓입니다. 이익실현이 설정되지 않았습니다.
4/ 주문이 손절매와 같은 이익에 도달하면 손절매를 손익분기점으로 이동합니다(포지션의 손절매를 시작 가격으로 이동).
5/ 1차 활성화 후 2차 주문, DO NOT DELETE!
6/ 주말에 손익에 관계없이 모든 주문을 삭제/닫습니다.
도와 주셔서 감사합니다:)
어드바이저 코드가 있는 파일을 첨부합니다
친구, 저는 MQL4를 배우고 있으며 Lazy Trader 시스템에 대한 Expert Advisor를 작성 하기로 결정했습니다.
Expert Advisor가 작성되었지만 제대로 작동하지 않습니다. 내가 보는 오류는 주문이 제 시간에 마감되지 않는다는 것입니다. 아마도 다른 오류가 있을 수 있습니다.
오류를 찾는 데 도움을 주고 표시되는 코드에 대한 피드백을 제공하세요.
다음은 내가 Expert Advisor를 작성한 시스템의 규칙입니다.
1/ 한 주의 시작에 우리는 첫 4시간 촛불의 마감을 기다립니다.
2/ 보류 중인 매수 스탑 및 매도 스탑 주문은 이 양초의 고점보다 20핍, 저점보다 20핍 낮습니다.
3/ 손절매는 반대의 수준에 놓입니다. 이익실현이 설정되지 않았습니다.
4/ 주문이 손절매와 같은 이익에 도달하면 손절매를 손익분기점으로 이동합니다(포지션의 손절매를 시작 가격으로 이동).
5/ 1차 활성화 후 2차 주문, DO NOT DELETE!
6/ 주말에 손익에 관계없이 모든 주문을 삭제/닫습니다.
도와 주셔서 감사합니다:)
어드바이저 코드가 있는 파일을 첨부합니다
이러한 절대적인 평등은 극히 드물며, 주일이 23시에 마감되면 최소 15분 이상 일찍 주문을 마감하는 것이 좋습니다. 다른 오류는 찾아보지 않았습니다. 얼핏 보면 아주 깔끔하게 쓰여져 있다.
이러한 절대적인 평등은 극히 드물며, 주일이 23시에 마감되면 최소 15분 이상 일찍 주문을 마감하는 것이 좋습니다. 다른 오류는 찾지 않았습니다. 얼핏 보면 아주 깔끔하게 쓰여져 있다.
주중 마감 - 00:00, 즉 1시간 일찍 주문을 마감합니다.
이 코드에서 잘못된 점: TimeHour ( TimeCurrent ()) == DayTimeClose ?
이 코드의 어딘가에 오류가 있는 것 같습니다.
}
감사해요
주중 마감 - 00:00, 즉 1시간 일찍 주문을 마감합니다.
이 코드에서 잘못된 점: TimeHour ( TimeCurrent ()) == DayTimeClose ?
이 코드의 어딘가에 오류가 있는 것 같습니다.
}
감사해요
이것이 바로 제가 보여준 것입니다. 지금은 내가 부주의했음을 알지만. 강조 표시된 TimeHour( TimeCurrent() ) == DayTimeClose만 보았습니다.
사이클 카운터는 다음과 같습니다. i와 주문 k가 선택되어 있는데 이것을 바로 보지는 못했습니다.
이것이 바로 제가 보여드린 것입니다. 지금은 내가 부주의했음을 알지만. 강조 표시된 TimeHour( TimeCurrent() ) == DayTimeClose만 보았습니다.
사이클 카운터는 다음과 같습니다. i와 주문 k가 선택되어 있는데 이것을 바로 보지는 못했습니다.
예, 이 K가 상단 헤더의 외부 변수 에도 표시됩니다. 아마도 이것은 일부 함수의 반환 값일 것입니다 ...
Alexey, 내 문제에 대해 무엇을 말할 수 있습니까? 중지 취소 명령을 지키려는 추적. 이것을 만난 적이 있습니까?