MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 99

 

드라투티. 그런 패널을 만드는 방법?

 
Andrey Sokolov :

드라투티. 그런 패널을 만드는 방법?

코드 베이스에서 예를 들어 다시 작성하십시오. 모든 취향에 맞는 패널이 있는 많은 조언자가 있습니다. 모든 것은 배경 에서 시작됩니다
 
Andrey Sokolov :

드라투티. 그런 패널을 만드는 방법?

그래픽 개체.
 
Vitaly Muzichenko, Artyom Trishkin 감사합니다 .
 
Andrey Sokolov :
Vitaly Muzichenko, Artyom Trishkin 감사합니다 .
Nzcht
 
trader781 :

나는 마틴게일에 계속해서 다른 돼지 꼬리를 쓰고 테스터에서도 병합합니다. 그렇지 않으면 어떻게 무스를 키울 수 있습니까?

현재, 이전 주문이 마감된 후 다음 주문을 열 가능성을 책임져야 하는 원하는 매개변수가 있습니다.

2개의 시나리오를 수행해야 합니다

1) 값이 참인 경우

주문을 열다

우리는 처리

닫다

그리고 새로운

2) 거짓인 경우

주문 열기

우리는 처리

닫다

ExpertRemove를 즐기십시오.

전체 문제는 이 두 조건이 상호 배타적이지만 1EA로 결합해야 한다는 것입니다.

1) 시작 시 값이 설정됩니다.

2) 입력 및 처리 조건에서 (true일 경우 open)

3) 닫은 후 false로 설정

관심이 있는 사람이 있으면 옵션을 듣게 되어 기쁩니다.
논리에 문제가 있습니다.

모든 것이 간단합니다.

  1. 주문을 열다
  2. 주문 처리
  3. 주문을 마감하다
  4. 상태를 확인하고...
    • 참이면 ExpertRemove()
  5. 그리고 새로운 방식으로
 
Artyom Trishkin :
논리에 문제가 있습니다.

모든 것이 간단합니다.

  1. 주문을 열다
  2. 주문 처리
  3. 주문을 마감하다
  4. 상태를 확인하고...
    • 참이면 ExpertRemove()
  5. 그리고 새로운 방식으로
사실이라면 무언가가 옳지 않은 것 같습니다-수풀이 아닌 양배추를 잘라야합니다)
 
Vitaly Muzichenko :
사실이라면 무언가가 옳지 않은 것 같습니다-수풀이 아닌 양배추를 잘라야합니다)
글쎄, 내가 틀렸어. 거짓. 글쎄, 나는 거기에서 무엇을 확인하고 있는지 모르겠다 ... 젠장, 논리가 남아 있습니다.
아니면 그냥 채팅하시겠습니까?
 

말해 주세요. Expert Advisor는 터미널에서 주문을 열지 않습니다. 편집이 실행 중이며 차트에 따라 주문을 열어야 합니다. 사실, 그들은 그렇지 않습니다. 코드를 첨부합니다.

double lot=NormalizeDouble((AccountFreeMargin()/100*Percent)/MarketInfo(Symbol(),MODE_MARGINREQUIRED),1);//랏 수 결정
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,0);//현재 막대의 메인 라인의 MACD 매개변수
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,1);//이전 막대 메인 라인의 MACD 매개변수
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,2);//주선 MACD 매개변수(2개 막대 오프셋 포함)
double StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);//Parameters 현재 막대의 ParabolicSAR 매개변수를 기반으로 한 후행 정지
double Previous_StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//이전 막대의 ParabolicSAR 매개변수에 의한 StopLoss 매개변수
double PSARCurrent=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);//현재 막대의 ParabolicSAR 매개변수
double PSARPrevious=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//이전 막대의 ParabolicSAR 매개변수
//+----------------------------------------------- --------------------+
//| 전문가 틱 기능 |
//+----------------------------------------------- --------------------+
무효 OnTick()
{
static datetime New_Time=TimeCurrent();// 현재 막대의 시간
부울 New_Bar=거짓; // 새 막대 플래그
int 티켓, 총계, cnt;
//------------------------------------------------ --------------------------
{
New_Bar=거짓; // 새 막대가 없습니다.
if(Time[0]==New_Time) // 시간 비교
{
New_Bar=참; // 새 막대가 있습니다.
if(New_Bar==false) // 새로운 막대가 아닌 경우..
반품; // ..그럼 우리는 떠난다
}
}
total=OrdersTotal();// 주문 수 확인
if(총<1)
{
//--- 미결 주문 없음
if((AccountFreeMargin()/100*Percent)<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT)))
//최소 로트를 열 수 있는 자금의 가용성 확인
{
Print("잔액이 부족합니다. 여유자금 = ",AccountFreeMargin());
반품;
}

//--- 롱 포지션을 열기 위한 조건(BUY)
if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0)
&&
PSARCurrent<iOpen(NULL,0,1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,0,NULL,MAGICNUMBER,0,Green);
if(티켓>0)//오픈 포지션 확인
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열려 있습니다 : ",OrderOpenPrice());
또 다른
Print("구매 주문 열기 오류: ",GetLastError());
반품;
}
}

//--- 매도 포지션(SELL)을 여는 조건
if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0)
&&
PSARCurrent>iOpen(NULL,0,1))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,0,NULL,MAGICNUMBER,0,Red);
if(티켓>0)//오픈 포지션 확인
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열려 있습니다 : ",OrderOpenPrice());
또 다른
Print("판매 주문 열기 오류: ",GetLastError());
반품;
}
}
//--- "미결 주문 없음" 블록에서 종료

}
//--- 시장에 제대로 진입하는 것도 중요하지만 올바르게 빠져나가는 것도 더 중요하다
for(cnt=0;cnt<전체;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==MAGICNUMBER && // 주문 매직 넘버 확인
OrderSymbol()==Symbol()) // 주문 기호 확인
{
//--- 롱포지션 오픈
if(주문유형()==OP_BUY)
{
//--- 닫아야 합니까?
if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0)
&&
PSARCurrent>iOpen(NULL,0,1))
{
//--- 주문을 종료하고 종료
if(!OrderClose(OrderTicket(),OrderLots(), 입찰, 3, 보라색))
Print("주문 마감 오류",GetLastError());
반품;
}
//----StopLoss로 주문 수정
if(StopLoss>Previous_StopLoss && StopLoss<iOpen(NULL,0,0))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Previous_StopLoss,0,0,Blue))
Print(" 주문 수정 오류 . 오류 코드=",GetLastError());
또 다른
Print("손절매 주문 가격이 성공적으로 수정되었습니다.");
반품;
}
}

else // 짧게 간다
if(주문 유형()==OP_SELL)
{
//--- 닫아야 합니까?
if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0)
&&
PSARCurrent<iOpen(NULL,0,1))
{
//--- 주문을 종료하고 종료
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
Print("주문 마감 오류",GetLastError());
반품;
}
//-----------------StopLoss에 의한 주문 수정
if(StopLoss<Previous_StopLoss && StopLoss>iOpen(NULL,0,0))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Previous_StopLoss,0,0,Blue))
Print("주문을 수정하는 동안 오류가 발생했습니다. 오류 코드=",GetLastError());
또 다른
Print("손절매 주문 가격이 성공적으로 수정되었습니다.");
반품;
}
}
}

//------------------------------------------------ -------------------------------------------------- ------

 
trader781 :

예, 더 쉽습니다

이 옵션을 스페어로 남겨두고 이렇게 하면 어떻게 될까요?

상태를 확인하고...
  • true이면 봇이 최소한의 활동으로 중단됩니다. 가급적이면 전혀 활동하지 않는 것이 좋습니다.

즉, 추가 작업을 위해 입구를 차단하는 방법

반환(0); 그러나 이것은 바람직하지 않습니다. 다른 것은 처리하지 않습니다.