코딩하는 방법? - 페이지 123

 
InTrance:
시도하지 말고 해

나 직장에 있어... 그리고 여기에서 메타트레이더 포트가 차단되어 있어

 

안녕하세요, 저는 아직 프로그래밍이 처음이고 이 간단한 EA에 다음 기능을 추가하는 데 문제가 있습니다.

1. 이익을 취하다

2. 손절매

3. 후행 정지

4. 후행 정지를 활성화하는 핍 수

//---- input parameters

extern double Lots=0.1;

extern int Slippage=5;

int MagicNum = 98760;

bool longPosOpened, shortPosOpened;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);

double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);

if (crossup != EMPTY_VALUE)

{

if (!PosOpened(OP_BUY))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);

}

}

else if(crossdown != EMPTY_VALUE)

{

if (!PosOpened(OP_SELL))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);

}

}

return(0);

}

//+------------------------------------------------------------------+

bool PosOpened(int orderType)

{

int total=OrdersTotal();

for(int cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderType() == orderType)

{

return(true);

}

}

return(false);

}

void CloseAllOpenAndPendingTrades()

{

int total = OrdersTotal();

for(int i=total-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair

int type = OrderType();

bool result = false;

switch(type)

{

//Close opened long positions

case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);

break;

//Close opened short positions

case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);

break;

//Close pending orders

case OP_BUYLIMIT :

case OP_BUYSTOP :

case OP_SELLLIMIT :

case OP_SELLSTOP : result = OrderDelete( OrderTicket() );

}

}

return(0);

}

 

포물선 모양 의 sar에서 점프를 감지하는 방법은 무엇입니까?

현재 점프를 감지하기 위해 다음 코드를 사용하고 있습니다.

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // 점프가 있는 경우

그러나 이것은 제대로 작동하지 않는 것 같습니다.

psar가 내 막대 위 또는 아래에 있는지 어떻게 감지합니까?

티아

 
:: 메타 트레이더에서 프록시 사용...

인텐션

ssvl:
나 직장에 있어... 그리고 여기에서 메타트레이더 포트가 차단되어 있어
 
:: sar 결과를 현재 닫기[0]와 비교
ssvl:
현재 점프를 감지하기 위해 다음 코드를 사용하고 있습니다.

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // 점프가 있는 경우

그러나 이것은 제대로 작동하지 않는 것 같습니다.

psar가 내 막대 위 또는 아래에 있는지 어떻게 감지합니까?

티아
 

안녕하세요 IN10TION, 다음 신호가 올 때까지 EA가 다른 거래(재진입)를 하지 않도록 거래가 막 마감 되었는지 확인 하는 좋은 방법을 알고 있습니까? 내 EA는 최대 10바까지 거래 조건을 확인하지만 매도 거래 조건이 처음 몇 바에서 이미 충족되고 마감된 경우 EA가 최대 10바 오프셋 확인을 중지하고 다음 실제 신호까지 기다리기를 원합니다.

탄스크

 

OrderHistory() 함수 를 사용하십시오.

럭스

 
luxinterior:
OrderHistory() 함수를 사용합니다. 럭스

감사하지만 어떻게 작동하는지 잘 모르겠습니다. 나는 주문이 방금 마감되었는지 알고 싶지 않고 오히려 많은 바 내에서 주문이 방금 열리고 닫혔는지 알고 싶습니다. 그런 다음 다음 주요 신호 항목에만 다른 거래를 하십시오. 나는 여전히 주문이 시작되고 닫혔지만 거래 조건이 여전히 충족되었을 때 빠른 거래 재입력을 없애려고 노력하고 있습니다. 어떻게든 메인 신호당 하나의 거래만 하기를 원합니다. 따라서 거래 조건이 여전히 유효하더라도 해당 신호(오프셋 포함)에서 이미 거래된 경우 다시 거래하지 마십시오.

내가 예를 들어 설명할 수 있는지 보자. 어쩔 수 없는 일이 아닐 수 없습니다.

예: QQE 및 VQI를 신호 무역 진입 점으로 사용하고 있다고 가정해 보겠습니다(QQE 교차 및 VQI가 구매에서 판매로 또는 그 반대로 변경됨)

이제 QQE 교차 및 VQI 신호가 동일한 막대에서 정확하게 발생하지 않을 수 있기 때문에 6개의 막대를 가정해 봅시다.

이제 QQE와 VQI가 동의할 때 서로 2바 이내의 유효한 거래가 있다고 가정해 보겠습니다. 이제 거래가 이루어졌지만 TP가 10핍이고 바가 15핍 이동합니다. 내 TP는 적중되고 거래가 마감됩니다. 내 6바 오프셋으로 인해 거래 조건이 여전히 충족됩니다. 이제 다른 거래가 잘못 배치(재진입)되었습니다. 하나 또는 두 개의 막대가 100핍을 움직이고 내 TP가 10이면 10번의 거래를 한 것입니다. 신호당 하나의 거래만 원합니다(오프셋 포함)

말이 돼? 반대 신호가 발생하고 다른 거래가 여전히 마감된 경우에도 여전히 6개 막대 내에서 거래되기를 원합니다.

감사해요

 
:: [switch] 변수를 만들고 이미 1개의 판매 주문 이 있으면 다른 판매를 중지하고(스위치 값은 -1) 구매 신호 및 구매 주문이 있을 때만 재조정됩니다(스위치 값은 1). .. 생각할 수 있는 추가(잉여)는 타이머 재설정입니다. 큰 추세가 상승 또는 하락하는 경우 동일한 주문(타이밍) 사이에 일종의 간격으로 2 또는 3개의 판매를 가질 수 있습니다.

인텐션

matrixebiz:
감사하지만 어떻게 작동하는지 잘 모르겠습니다. 나는 주문이 방금 마감되었는지 알고 싶지 않고 오히려 많은 바 내에서 주문이 방금 열리고 닫혔는지 알고 싶습니다. 그런 다음 다음 주요 신호 항목에만 다른 거래를 하십시오. 나는 여전히 주문이 시작되고 닫혔지만 거래 조건이 여전히 충족되었을 때 빠른 거래 재입력을 없애려고 노력하고 있습니다. 어떻게든 메인 신호당 하나의 거래만 하기를 원합니다. 따라서 거래 조건이 여전히 유효하더라도 해당 신호(오프셋 포함)에서 이미 거래된 경우 다시 거래하지 마십시오.

내가 예를 들어 설명할 수 있는지 보자. 어쩔 수 없는 일이 아닐 수 없습니다.

예: QQE 및 VQI를 신호 무역 진입점으로 사용하고 있다고 가정해 보겠습니다(QQE 교차 및 VQI가 구매에서 판매로 또는 그 반대로 변경됨)

이제 QQE 교차 및 VQI 신호가 동일한 막대에서 정확하게 발생하지 않을 수 있기 때문에 6개의 막대를 가정해 봅시다.

이제 QQE와 VQI가 동의할 때 서로 2바 이내의 유효한 거래가 있다고 가정해 보겠습니다. 이제 거래가 이루어졌지만 TP가 10핍이고 바가 15핍 이동합니다. 내 TP는 적중되고 거래가 마감됩니다. 내 6바 오프셋으로 인해 거래 조건이 여전히 충족됩니다. 이제 다른 거래가 잘못 배치(재진입)되었습니다. 하나 또는 두 개의 막대가 100핍을 움직이고 내 TP가 10이면 10번의 거래를 한 것입니다. 신호당 하나의 거래만 원합니다(오프셋 포함)

말이 돼? 반대 신호가 발생하고 다른 거래가 여전히 마감된 경우에도 여전히 6개 막대 내에서 거래되기를 원합니다.

감사해요
 

2개의 메타트레이더 애플리케이션 간에 데이터 공유

두 번째 메타 트레이더에서 데이터를 읽기 위해 한 메타 트레이더의 파일에 데이터를 쓰려고 합니다.

문제는 c:\에 쓰려고 할 때 "절대 파일 경로 "C:\EURUSD.txt"가 허용되지 않습니다"라는 오류 메시지가 표시된다는 것입니다.

두 메타 트레이더 응용 프로그램 간에 데이터를 공유하는 아이디어 또는 다른 방법이 있습니까?