거래를 반대로 합니다. 고문의 구조가 변경됨 - 기능이 제거되었습니다. 특정 조건에서 하나의 양초를 닫고 여는 방법.
외부 이중 TP = 70; // 이익을 취하다 외부 이중 SL = 0; //스톱로스 외부 이중 로트 = 0.1;
더블 하이레벨; 더블 로우레벨; 인트레스바이=0; 인트레스셀=0;
//+----------------------------------------------- --------------------+ //| 전문가 초기화 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { HighLevel=높음[1]; LowLevel=낮음[1]; 반품; }
//+----------------------------------------------- --------------------+ //| 전문가 기능 | //+----------------------------------------------- --------------------+
좋은 오후/밤
나는 작동하지 않는 원시적인 방식으로 거래를 되돌리려고 노력하고 있습니다(EA의 계산은 틱으로 진행됨).
if(CalculateCurrentOrders(Symbol())>0 && Close[1]<LowLevel) // 매수 주문이 있었는지 확인 && 캔들이 낮은 수준 아래에서 마감된 경우
{
CheckForClose(); // 주문 마감
오픈셀(); // 매도 주문 열기
반품;
}
내가 뭘 잘못하고 있는지 말해줘? 나는 또한 이 격차를 메우는 데 도움이 될 링크에 대해 감사할 것입니다.
dzhini :
나는 작동하지 않는 원시적인 방식으로 거래를 되돌리려고 노력하고 있습니다(EA의 계산은 틱으로 진행됨).
if( CalculateCurrentOrders(Symbol())> 0 && Close[1]<LowLevel) // 구매 주문이 있었는지 확인 && 캔들이 낮은 수준 아래에서 닫혔는지 확인
Time1과 Time2 사이에 몇 분인지 확인하는 방법은 무엇입니까?
이 기능에서는 아마도 모든 주문을 계산할 것입니다. 하지만 당신은 바이가 필요합니다
다음은 표준 기능입니다.
int CalculateCurrentOrders(문자열 기호)}
>0이면 매수 주문 , <0이면 매도 주문)))
Time1과 Time2 사이에 몇 분인지 확인하는 방법은 무엇입니까?
차이는 초 수를 반환합니다.
60으로 나눕니다. 분 수를 구하십시오.
외부 이중 TP = 70; // 이익을 취하다
외부 이중 SL = 0; //스톱로스
외부 이중 로트 = 0.1;
더블 하이레벨;
더블 로우레벨;
인트레스바이=0;
인트레스셀=0;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
HighLevel=높음[1];
LowLevel=낮음[1];
반품;
}
//+----------------------------------------------- --------------------+
//| 전문가 기능 |
//+----------------------------------------------- --------------------+
무효 시작()
{
if(Bars<100 && IsTradeAllowed()==false) 반환;
if(resBuy==0 && resSell==0 && CheckBreak()==-1)
{
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=닫기[1];
반품;
}
if(resBuy==0 && resSell==0 && CheckBreak()==1)
{
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=고수준;
HighLevel=닫기[1];
반품;
}
if(resBuy!=0 && resSell==0 && 닫기[1]<LowLevel) //----------------------------- --------이 부분이 흥미롭습니다: 같은 막대에서 닫기와 열기
{
bool closeBuy=OrderClose(resBuy, Lot, Bid, 2, Blue);
// while(!IsTradeAllowed()) Sleep(100);
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=닫기[1];
반품;
}
if(resSell!=0 && resBuy==0 && 닫기[1]>HighLevel) //---------------------------------------- ------ --이 부분이 흥미롭습니다: 같은 막대에서 닫기와 열기
{
bool closeSell=OrderClose(재판매, 로트, 매도, 0.0002, 레드);
// while(!IsTradeAllowed()) Sleep(100);
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=고수준;
HighLevel=닫기[1];
반품;
}
}
//------------------------------------------------ ------------------ Low&High 브레이크 확인(Func)
이중 CheckBreak()
{
양초=열기[1]-닫기[1];
if(촛불>0 && Low[1]<LowLevel) return(-1);
if(candle<0 && High[1]>HighLevel) return(1);
}
차이는 초 수를 반환합니다.
60으로 나눕니다. 분 수를 구하십시오.
그것은 단지 나를 위해 날짜 1971.03.04 12:00을 표시합니다. 아마도 변환해야 합니까?
그것은 나를 위해 날짜를 표시합니다. 아마도 변환해야합니까?
첫 번째 - 왜 60을 곱합니까?
두 번째 - 화면에 분 수를 00:15와 같은 시간으로 표시하려면
60으로 나누거나 곱할 필요가 없습니다.
첫 번째 - 왜 60을 곱합니까?
두 번째 - 화면에 분 수를 00:15와 같은 시간으로 표시하려면
60으로 나누거나 곱할 필요가 없습니다.
네 나눗셈으로 수정했는데 연도가 1970.01.01 02:51 나오네요
나는 화면에 그것을 필요로하지 않습니다. 나는 단지이 기간 동안 날짜없이 분 수를 찾고 싶었습니다 ....
나누지 않아도 여전히 날짜가 표시되는지, 아니면 여전히 기능이 반발되는 날짜를 빼야합니까?
분 수만 필요하다면 TimeToStr 을 사용할 이유가 전혀 없습니다.
시간은 일반적인 int 숫자입니다.
또는 옵션으로 - TIME_MINUTE 플래그와 함께만 TimeToStr 을 사용하십시오.