묻다! - 페이지 61

 

코드 질문

게시물은 무시해주세요. 이 설정은 필요한 작업을 수행했습니다. 도움을 주셔서 감사합니다.

여러 가지 방법으로 작동하도록 EA를 수정했습니다. 몇 가지 조사를 했지만 주문을 열 때 주석 필드에 EA 이름을 추가하는 방법을 알 수 없습니다. 누군가 올바른 방향으로 나를 가리켜 주실 수 있습니까?

테스트 중에 둘 이상의 EA를 실행할 때 주문이 더 잘 구성되도록 수정하는 모든 EA에 통합할 수 있는 간단한 문자열 명령이 있기를 바랍니다.

시간과 통찰력을 주셔서 감사합니다.

다음은 EA 의견을 입력하기 위해 변경해야 하는 수정되지 않은 섹션 중 하나입니다.

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp," CommentName ", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

파일:
 

우리를 위해 여기에 와주신 Coderguru에 감사드립니다!

알림에 대해 질문이 있습니다.

이 코드에서 경고 유형을 변경하여 내가 선택한 wav 파일을 재생하고 팝업 창에서 물건을 사지 않도록 하고 싶습니다. 프랙탈 이 나타나면 wav 파일을 재생하십시오.

코드는 어떻게 되어야 합니다. sFractals 경고 표시기를 첨부했습니다.

if(이전 신호 <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

이전 신호 = 1;

Alert("sFractals(", Symbol(), ", ", Period(), ") - 구매!!!");

}

}

if(이전 신호 >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals(", Symbol(), ", ", Period(), ") - SELL!!!");

}

}

파일:
sfractals.mq4  8 kb
 
proverbs:
논리가 확실하지 않지만 다음 위치에 CommentName 을 입력할 수 있습니까? 나는 이것을 테스트하지 않았지만 잘 컴파일됩니다.

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp," CommentName ", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

잘 작동합니다. 그 자리에 문자열 변수를 넣을 수도 있습니다.

 
Drivefast:
우리를 위해 여기에 와주신 Coderguru에 감사드립니다!

알림에 대해 질문이 있습니다.

이 코드에서 경고 유형을 변경하여 내가 선택한 wav 파일을 재생하고 팝업 창에서 물건을 사지 않도록 하고 싶습니다. 프랙탈이 나타나면 wav 파일을 재생하십시오.

코드는 어떻게 되어야 합니다. sFractals 경고 표시기를 첨부했습니다.

if(이전 신호 <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

이전 신호 = 1;

Alert("sFractals(", Symbol(), ", ", Period(), ") - 구매!!!");

}

}

if(이전 신호 >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals(", Symbol(), ", ", Period(), ") - SELL!!!");

}

}

나는 CodersGuru가 죽었다고 생각합니다. 그는 잠시 동안 주위에 없었다.

어쨌든 .... 다음 명령문을 추가하십시오.

PlaySound("alert.wav");

.... 여기서 "alert.wav"는 재생하려는 파일의 이름입니다.

 
ryanklefas:
나는 CodersGuru가 죽었다고 생각합니다. 그는 잠시 동안 주위에 없었다.

어쨌든 .... 다음 명령문을 추가하십시오.

PlaySound("alert.wav");

.... 여기서 "alert.wav"는 재생하려는 파일의 이름입니다.

내 게시물에 응답해 주셔서 감사합니다.

PlaySound ("alert.wav")를 어디에 둘지 잘 모르겠습니다. 코드에서.

이 부분만 삭제해도 될까요? Alert("sFractals(", Symbol(), ", ", Period(), ") - 구매!!!");

아니면, 꼭 이런 식이어야 합니까?

이전 신호 = 1;

PlaySound("alert.wav");

Alert("sFractals(", Symbol(), ", ", Period(), ") - 구매!!!");

 

네. 전체 경고를 소리로 바꾸면 됩니다.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

도움을 주신 ryanklefas에게 감사합니다. 지금 원하는 대로 작동합니다.

 

정렬에 대해 문의

2차원 배열에 저장된 2차원 데이터 테이블이 있습니다. 해당 데이터 테이블의 열에 따라 정렬하는 것과 같은 조작을 하고 싶습니다.

명령어의 ArraySort() 함수 는 첫 번째 차원에서 배열을 정렬할 수 있습니다. 그것이 나를 위해 어떻게 작동하는지 알 수 없습니다.

MetaTrader의 데이터 테이블 정렬에 대한 제안 사항이 있습니까?

 

전문가 고문 간의 커뮤니케이션

여보세요,

EA A가 주요 전략이라고 가정해 보겠습니다.

백업 전략으로 백업 EA B

나는 2개의 다른 쌍에 그것을 배치한다.

EA A가 드로다운 위치에 있으면 EA B를 시작하고 싶습니다...

EA A와 EA B의 누적 이익이 어느 정도 목표점에 도달했을 때..

EA A와 EA B의 모든 포지션을 청산

그게 가능한가요?

 
veematics:
여보세요,

EA A가 주요 전략이라고 가정해 보겠습니다.

및 백업 전략으로 백업 EA B

나는 2개의 다른 쌍에 그것을 놓는다.

EA A가 드로다운 위치에 있으면 EA B를 시작하고 싶습니다...

EA A와 EA B의 누적 이익이 어느 정도 목표점에 도달했을 때..

EA A와 EA B의 모든 포지션을 청산

그게 가능한가요?

나는 전역 변수가 당신이 찾고있는 것이라고 생각합니다. MetaEditor 참조 섹션에서 확인할 수 있습니다. 현재 전역 변수를 보려면 MT4 터미널에서 F3을 누르십시오.