1. EA는 설정에 지정된 동일한 로트로 2개의 시장 주문(구매 및 판매)을 엽니다. - 항목이 비고 없이 실행됨
다음 문제에서 문제가 발생하여 가격이 SELL과 BUY 모두로 이동할 수 있습니다. n 포인트를 전달할 때 어드바이저가 LIVE에서 이 두 거래의 수익성을 스캔하고 n 포인트를 통과한 후 잔액이 마이너스인 주문을 정확히 마감하도록 코드를 구성할 수 있습니까? 아름답게 만드는 방법에 대한 다른 아이디어가 있으면 알려주십시오.
나는 코드를 제공합니다 - 초안, 첫 번째 포인트만 실행되고 TP 및 SL로 2개의 거래가 열립니다.
2. 가격이 설정에 지정된 포인트 수를 초과하면 잔액이 음수인 주문이 마감되고 동일한 로트로 2개의 추가 주문(매수 및 매도)이 열리며,
설정에 지정된 모든 주문에 대해 첫 번째 주문의 시작 가격에 스탑이 지정됩니다. 즉, 추세가 역전되면 3개의 주문이 모두 동시에 마감되어야 합니다.
externint _ms = 1000 ;
externdouble _lots = 0.01 ;
externdouble _TP = 80 ;
externdouble _SL = 35 ;
int _mn;
double pt;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
pt = Point ;
if ( Digits == 3 || Digits == 5 ) {pt*= 10 ;} else pt = Point ;
_mn = MagicNumberGenerator(_ms);
Print ( "The magic number is " ,_mn);
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
if (IsNewCandle())
{
if (TotalOpenOrders(_mn)== 0 )
{
EnterTrade( OP_BUY );
EnterTrade( OP_SELL );
}
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Открытие первых позиций |//+------------------------------------------------------------------+void EnterTrade( int type)
{
double price = 0 ; double sl = 0 ; double tp = 0 ; double lot = _lots;
if (type == OP_BUY ) price = Ask ;
elseif (type == OP_SELL ) price = Bid ;
int err = 0 ;
int ticket = OrderSend ( _Symbol , type, lot, price, 30 , 0 , 0 , NULL , _mn, 0 , clrGreen );
if (ticket == - 1 )
{
err = GetLastError ();
Print ( "Could not place the order due to error " ,err, " " ,ErrorDescription(err));
if (err == ERR_TRADE_NOT_ALLOWED ) Alert ( "You need to enable you autotrade button" );
}
else
{
if (! OrderSelect (ticket, SELECT_BY_TICKET ))
{
err = GetLastError ();
Print ( "Could not select the order due to error " ,err, " " ,ErrorDescription(err));
}
else
{
if ( OrderType ()== OP_SELL )
{
sl = OrderOpenPrice ()+(_SL*pt);
if (_SL== 0 ) sl = 0 ;
tp = OrderOpenPrice ()-(_TP*pt);
}
elseif ( OrderType ()== OP_BUY )
{
sl = OrderOpenPrice ()-(_SL*pt);
if (_SL== 0 ) sl = 0 ;
tp = OrderOpenPrice ()+(_TP*pt);
}
if (! OrderModify (ticket, OrderOpenPrice (), sl, tp, 0 , clrNONE ))
err = GetLastError ();
Print ( "Could not modify the order due to error " ,err, " " ,ErrorDescription(err));
}
}
}
작업은 최소한의 마감이 있는 막대를 찾는 것입니다.
for(int x=0; x<=xBars -1; x++)
{
카운터++;
// Print(닫기[x],",,,",카운터);
정수 h = ArrayMinimum(닫기[x]);
if(카운터 > 20) 중단;
}
컴파일러는 닫기에서 맹세합니다.
별도의 배열에 종가 를 작성한 다음 ArrauMin 루프 외부에 작성하십시오.
작업은 최소한의 마감이 있는 막대를 찾는 것입니다.
iHighest 및 iLowest 기능이 있습니다(현재 MT5에도 있음).
iHighest 및 iLowest 기능이 있습니다(현재 MT5에도 있음).
작업은 최소한의 마감이 있는 막대를 찾는 것입니다.
for(int x=0; x<=xBars -1; x++)
{
카운터++;
// Print(닫기[x],",,,",카운터);
정수 h = ArrayMinimum(닫기[x]);
if(카운터 > 20) 중단;
}
컴파일러는 닫기에서 맹세합니다.
MQL4에서 최소/최대 가격 을 찾는 작업은 한 줄로 해결됩니다.
가능하지만 타이머가 아닙니다.
고맙습니다.
증분으로 많은 양을 계산하는 방법은 무엇입니까? 예금=1000, lot=0.1이면 예금은 2000 lot=0.2가 됩니다. 즉, 창고가 1500이나 1700이면 로트가 증가하지 않습니다.
고맙습니다.
로트의 볼륨을 증분으로 계산하는 방법은 무엇입니까? 예금 = 1000, 로트 = 0.1이면 보증금은 2000 로트 = 0.2가 됩니다. 즉, 디포가 1500이나 1700이면 로트가 증가하지 않습니다.
이 같은...
이 같은...
아니요, 창고가 1100이면 로트는 0.11이 됩니다. 하지만 2000까지 증가하지 않으려면 로트가 필요합니다. 설정에서 단계 = 1000을 어떻게 설정합니까?
안녕하세요 프로그래머입니다. 다음 조건에 올바르게 접근하는 방법을 알려주시겠습니까?
1. EA는 설정에 지정된 동일한 로트로 2개의 시장 주문(구매 및 판매)을 엽니다. - 항목이 비고 없이 실행됨
다음 문제에서 문제가 발생하여 가격이 SELL과 BUY 모두로 이동할 수 있습니다. n 포인트를 전달할 때 어드바이저가 LIVE에서 이 두 거래의 수익성을 스캔하고 n 포인트를 통과한 후 잔액이 마이너스인 주문을 정확히 마감하도록 코드를 구성할 수 있습니까? 아름답게 만드는 방법에 대한 다른 아이디어가 있으면 알려주십시오.
나는 코드를 제공합니다 - 초안, 첫 번째 포인트만 실행되고 TP 및 SL로 2개의 거래가 열립니다.
2. 가격이 설정에 지정된 포인트 수를 초과하면 잔액이 음수인 주문이 마감되고 동일한 로트로 2개의 추가 주문(매수 및 매도)이 열리며,
설정에 지정된 모든 주문에 대해 첫 번째 주문의 시작 가격에 스탑이 지정됩니다. 즉, 추세가 역전되면 3개의 주문이 모두 동시에 마감되어야 합니다.