OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit
}
return(0);
}
return(0);
}
}
지금 올바른 형식으로 여러분의 매우 관대한 코더 중 한 명이 위의 이 SL 및 TP 문제를 해결하는 데 도움이 될까요? 내 원래 요청으로 돌아갑니다. 내 수면 프로그램은 다양한 시간에 EA를 비활성화합니다. EA는 휴면 모드 이전에 40 - 50핍 손절매와 100의 이익실현 으로 열린 거래를 생성했습니다. EA가 휴면 상태가 되기 직전에 각 열린 티켓의 손절매를 15핍으로 변경하고 싶습니다. 이익실현이 25핍으로 변경되었습니다. 손절매는 트레일링 스탑이 아니라 현재 거래 가격(마찬가지로 이익실현)보다 낮거나(매수) 높거나(매도) 하드 스탑입니다. 나에게 당신의 전문 지식을 빌려주고 내 하루를 만드십시오!!
FirstRun=0;
prevtime=Time[0];
}
if ((prevtime == Time[0]) && (CurTime()-prevtime)>MaxTradeTime) {
NewBar=0;
}
else {
prevtime찾았어요! 앞으로도 그렇게 할 것입니다 - 우리가 이해하지 못하는 영역에서 우리보다 더 많은 지식과 지혜를 가진 다른 사람들의 도움으로 배우게 됩니다! 매우 감사합니다!
for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)
OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);
if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))
{
if(OrderOpenPrice()-Ask>=TrailingStop*Point)
{
if(OrderStopLoss()>Ask+Point*15||OrderStopLoss()==0)
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit
}
return(0);
}
if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))
{
if(Bid-OrderOpenPrice()>=TrailingStop*Point)
{
if(OrderStopLoss()<Bid-Point*15 ||OrderStopLoss()==0)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit
}
return(0);
}
return(0);
}
}지금 올바른 형식으로 여러분의 매우 관대한 코더 중 한 명이 위의 이 SL 및 TP 문제를 해결하는 데 도움이 될까요? 내 원래 요청으로 돌아갑니다. 내 수면 프로그램은 다양한 시간에 EA를 비활성화합니다. EA는 휴면 모드 이전에 40 - 50핍 손절매와 100의 이익실현 으로 열린 거래를 생성했습니다. EA가 휴면 상태가 되기 직전에 각 열린 티켓의 손절매를 15핍으로 변경하고 싶습니다. 이익실현이 25핍으로 변경되었습니다. 손절매는 트레일링 스탑이 아니라 현재 거래 가격(마찬가지로 이익실현)보다 낮거나(매수) 높거나(매도) 하드 스탑입니다. 나에게 당신의 전문 지식을 빌려주고 내 하루를 만드십시오!!
후행 정지의 경우 다음 함수 를 사용하십시오. 이해하기 쉽게 쓰여진 것 같아요. 때때로 프로그래밍 괴짜는 코드를 작성하는데, 이는 몇 밀리초 단위로 효율적일 수 있지만 읽고 디버그하기가 매우 어려운 작업이 됩니다.
void TrailingAlls(int start,int stop)
{
int profit;
double stoptrade;
double stopcal;
if(stop==0)
return;
int trade;
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
continue;
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
profit=NormalizeDouble((Bid-OrderOpenPrice())/Point,0);
if(profit<start)
continue;
stoptrade=OrderStopLoss();
stopcal=Bid-(stop*Point);
if(stoptrade==0||(stoptrade!=0&&stopcal>stoptrade))
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);
}//Long
if(OrderType()==OP_SELL)
{
profit=NormalizeDouble((OrderOpenPrice()-Ask)/Point,0);
if(profit<start)
continue;
stoptrade=OrderStopLoss();
stopcal=Ask+(stop*Point);
if(stoptrade==0||(stoptrade!=0&&stopcal<stoptrade))
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);
}//Shrt
}
}//for
}
다음을 사용하여 시작할 때 호출하십시오.
TrailingAlls(TrailStartPips,TrailStopPips);
Maji, 내 코드에서 (잘못된). 나는 후행 정지를 원하지 않습니다. 각 공개 매수 및 매도가 현재 통화 가격 에서 15핍의 하드 손절매와 25핍의 하드 테이크 이익을 갖도록 공개 티켓을 수정하고 싶습니다.
통화 기호와 관련된 미결 상태를 확인하기 위해 검색한 다음 각 미결 거래에서 손절매를 수정하고 이익을 내기 위해 필요합니다. 그게 내가 필요한 전부야.
어젯밤에 우리는 접선에 빠졌고 후행 정지에 빠졌습니다 - 나와 피닉스 사이의 오해.
그렇게 어렵지 않은 기능을 수행할 수 있도록 도와주세요 - 당신을 위한 것입니다!
데이브,
그 변화를 만드는 요소는 내가 당신에게 준 루틴에 있다고 생각합니다.
그렇지 않으면 코드나 이메일을 저에게 게시해야 하며 제가 무엇을 할 수 있는지 알 수 있습니다. 때로는 다른 사람의 코드를 읽는 것이 매우 어렵기 때문에 시간이 많이 걸리는 작업일 수 있습니다. 그런 경우에는 손을 들겠습니다.
행운을 빕니다.
Post #309는 PHP에서 그대로 내 코드입니다.
공개 거래를 15의 하드 손절매와 25의 하드 테이크 이익 으로 변경하기만 하면 됩니다. 당신과 같은 전문가가 이 코딩을 수정하는 데 너무 많은 노력을 기울이지 않아야 합니다.
데이브,
내가 말했듯이, 그런 종류의 편집을 하는 것은 매우 시간이 많이 걸립니다. 점심 시간에 놀고 있는데 여기 한 번 시도해 보세요. 작동하지 않으면 혼자입니다. 테스트를 거치지 않았기 때문에...
프로그램이 절전 모드로 전환되기 직전에 메인 프로그램에서 이것을 호출하십시오.
행운을 빕니다.
void ChangeStop(int takeprofit,int stop)
{
double profit;
double stopcal;
if(stop==0)
return;
int trade;
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
continue;
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
profit=Ask+(takeprofit*point);
stopcal=Bid-(stop*Point);
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,profit,0,Blue);
}//Long
if(OrderType()==OP_SELL)
{
profit=Bid-(takeprofit*point);
stopcal=Ask+(stop*Point);
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,profit,0,Red);
}//Shrt
}
}//for
}
이거 수정은 어디서 하나요?? 원래 손절매는 40이었고 이익실현은 100이었습니다. 절전 모드의 일부로 손절매는 기존 미결제 주문 에서 15로 변경되고 이익실현은 기존 미결제 주문 에서 25로 변경됩니다.
Open Order Tickets: 슬립 모드 전.
슬립 모드 전 손절매 - 40 슬립 모드 전 이익실현 -100 슬립 모드 후 손절매 수정 -15 슬립 모드 후 이익실현 수정 - 25
주문 설정을 초기화하는 것이 아니라 이미 접수된 기존 주문을 수정하고 여전히 활성 상태입니다.
어쨌든 도와주셔서 감사합니다! 왜 그렇게 간단한 것이 그렇게 어렵게 보이는가?
데이브,
어렵지 않습니다. MQ를 조금 더 공부해야 합니다. 내가 제공한 코드를 확인하세요. 매개변수 , stop 및 takeprofit은 사용하려는 숫자여야 합니다.
모든 것이 있습니다. 사용 방법을 알아내야 합니다.
수건을 던집니다. 오류가 발생합니다. 나는 피닉스가 제공한 것을 사용할 것입니다. 왜냐하면 그것이 내가 살 수 있는 지점까지 작동하기 때문입니다. 이 언어가 미국에서 배울 수 있는 학교가 있다면 내 삶이 훨씬 더 쉬워질 것입니다. 불행히도, 아무도 없습니다.
Maji와 Phoenix 모두 입력해 주셔서 감사합니다!