모두 동일하게 코드가 작동하지 않고 2개의 양초에서 모든 작업을 수행했습니다. 하지만 포즈가 이미 존재한다는 것을 배웠어야 했습니다. 더 이상 열지 마세요 ... 전체 예금 zayuzal이 될 수 있는 모든 것을 위해 열렸습니다(( Rid look, 아마도 다른 것을 추가해야 할 수도 있습니다 ... 매우 감사합니다
모두 동일하게 코드가 작동하지 않고 2개의 양초에서 모든 작업을 수행했습니다. 하지만 포즈가 이미 존재한다는 것을 배웠어야 했습니다. 더 이상 열지 마세요 ... 전체 예금 zayuzal이 될 수 있는 모든 것을 위해 열렸습니다(( Rid look, 아마도 다른 것을 추가해야 할 수도 있습니다 ... 매우 감사합니다
네 확실합니다....
f-and ORDERSEND에서 마법을 설정하는 것을 잊었습니다.
이제 모든 것이 정상입니다. 공장. 확인했습니다. 시장에는 반대 방향의 거래가 2개 이하이거나 단방향 거래가 1개 이하일 수 있습니다.
모든 유형의 거래가 하나만 필요하면 NumberOfPositions(c) 함수에서 거래 유형을 -1(1 빼기)로 바꿔야 합니다.
externint Magic =777;externint Ema1 =14;externint Ema2 =48;double Ema_1 ;double Ema_2 ;//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start (){//int Orders = OrdersTotal();
Ema_1 =iMA(NULL,0, Ema1 ,0,MODE_SMMA,PRICE_MEDIAN,0);
Ema_2 =iMA(NULL,0, Ema2 ,0,MODE_SMMA,PRICE_MEDIAN,0);int ticket ;//------------------------------------------------if( NumberOfPositions (NULL,OP_BUY, Magic )<1&& Ema_1 > Ema_2 ){
ticket =OrderSend(Symbol(),OP_BUY,0.5,Ask,10,Ask-850*Point,Ask+550*Point,"kupil", Magic ,0,Green);}//------------------------------------------------------if( NumberOfPositions (NULL,OP_SELL, Magic )<1&& Ema_1 < Ema_2 ){
ticket =OrderSend(Symbol(),OP_SELL,0.5,Bid,10,Ask+850*Point,Bid-550*Point,"kupil", Magic ,0,Violet);}//------------------------------------------------------return(0);}//жжжжжжжжж Пользовательские функции жжжжжжжint NumberOfPositions (string sy ="",int op =-1,int mn =-1){int i , k =OrdersTotal(), kp =0;if( sy =="0") sy =Symbol();for( i =0; i < k ; i ++){if(OrderSelect( i , SELECT_BY_POS , MODE_TRADES )){if(OrderSymbol()== sy || sy ==""){if(OrderType()==OP_BUY||OrderType()==OP_SELL){if( op <0||OrderType()== op ){if( mn <0||OrderMagicNumber()== mn ) kp ++;}}}}}return( kp );}
그러나 코드는 테스터에서만 작동합니다. 왜냐하면 그렇지 않으면 온라인에서 고문을 켤 때마다 마법을 변경해야 합니다.
정확히, 당신이 필요로 하는 것!
이 격자에 이 코드를 올바르게 삽입하는 방법을 알려주세요.
(직접 내기를 하면 테스터는 첫 번째 포지션의 오프닝에서 그냥 멈춥니다)
for(int i =0; i <OrdersTotal(); i ++){if(!(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )))continue;//выбираем из истории счетаif(OrderSymbol()!=Symbol())continue;if(OrderMagicNumber()== Magic ){
позиции =true;}}//Открытие позиции:bool Open_Buy (){bool res =false;if( условие_1 ){if( советник еще не открывал позиций с Магическим номером ){
res =true;}}else{if( условие_1 ){if( условие_2 опирается на данные прошлого ордера ){
res =true;}}}return( res );}
//==================Закрытие позиций ============================//----------------------------------------------------------------------for(int v =0; v <OrdersTotal(); v ++){if(OrderSelect( v , SELECT_BY_POS , MODE_TRADES )){if(OrderSymbol()==Symbol()&&OrderMagicNumber()== Magic ){//----------------------------------------------------- if(OrderType()==OP_BUY){// если открыта бай-позиция if( вот здесь вставляй свои условия закрытия ){OrderClose(OrderTicket(),OrderLots(),Bid,3,Вlack);// закрываем позицию}}//--------------------------------------------------------if(OrderType()==OP_SELL){// если открыта селл-позиция if( вот здесь вставляй свои условия закрытия ){OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);// закрываем позицию}}//------------------------------------------------------- }// Symbol() }// select}//total//------------конец блока закрытия позиций-----------------
이 블록을 START 함수 안에 삽입하십시오. 처음에 Ema_1, Ema_2, Ema_3을 계산한 직후에 할 수 있습니다. 그리고 분명히 OPENING PRICE EA의 작업을 수행해야 합니다. 그렇지 않으면 MA 교차점이 거의 모든 틱에서 지속적으로 시작 위치를 닫을 것입니다.
그리고 당신이 한 방식은 온라인이 올바르게 작동하지 않기 때문입니다. 고문은 다른 고문이나 매뉴얼이 개설한 포지션을 포함하여 모든 포지션을 폐쇄합니다.
그러나 더 쉽게, 나는 이미 그것을 하는 방법을 썼습니다. 위치를 열 때 NumberOfPositions(NULL,OP_BUY,Magic) 대신 NumberOfPositions(NULL,OP_SELL,Magic) 대신 설정하십시오.
https://docs.mql4.com/en/array/ArrayResize
네 확실합니다. 보았지만 보이지 않았습니다.
고맙습니다.
나는 오늘 브레이크를 밟는다. 주말에는 쉬어야 합니다.
이렇습니다 -
감사해요!!! 계속 사용하겠습니다...
DDFedor
제거하다
고맙습니다.
모두 동일하게 코드가 작동하지 않고 2개의 양초에서 모든 작업을 수행했습니다. 하지만 포즈가 이미 존재한다는 것을 배웠어야 했습니다. 더 이상 열지 마세요 ... 전체 예금 zayuzal이 될 수 있는 모든 것을 위해 열렸습니다(( Rid look, 아마도 다른 것을 추가해야 할 수도 있습니다 ... 매우 감사합니다
돕다. 나는 밤에 거래할 고문을 원합니다. 나는 코드를 작성
int start()
{
string Symb;
Symb=Symbol();
string Vremya;
Vremya=TimeToStr(TimeLocal(),TIME_MINUTES);
if(Vremya > 23:00 || Vremya < 06:00 )
{
// тут торговые функции
}
}
오류 메시지를 제공합니다
'||' - 조건은 문자열일 수 없습니다.
또한 조건이 다음으로 감소하면
if(시간 > 23:00
그것은 작동합니다
그리고 만약 전에
if(시간 < 06:00 )
그렇지 않습니다.
나는 무엇이 잘못되었는지 이해하지 못한다. 시간 설정 방법을 알려주세요.
모두 동일하게 코드가 작동하지 않고 2개의 양초에서 모든 작업을 수행했습니다. 하지만 포즈가 이미 존재한다는 것을 배웠어야 했습니다. 더 이상 열지 마세요 ... 전체 예금 zayuzal이 될 수 있는 모든 것을 위해 열렸습니다(( Rid look, 아마도 다른 것을 추가해야 할 수도 있습니다 ... 매우 감사합니다
네 확실합니다....
f-and ORDERSEND에서 마법을 설정하는 것을 잊었습니다.
이제 모든 것이 정상입니다. 공장. 확인했습니다. 시장에는 반대 방향의 거래가 2개 이하이거나 단방향 거래가 1개 이하일 수 있습니다.
모든 유형의 거래가 하나만 필요하면 NumberOfPositions(c) 함수에서 거래 유형을 -1(1 빼기)로 바꿔야 합니다.
iTime 기능이 무엇을 보여주는지 알려주세요.
이 10자리 abra-kadabra는 무엇입니까? 초?
년-월-일-시-분으로 변환하는 방법입니다.
다음과 같이: 막대 이동을 설정하고 기본적으로 전체 날짜와 시간을 가져옵니다(time=1 또는 true인 경우 시간만 가져옴).
매우 편리한 기능입니다. 적극 권장합니다.
rid 감사합니다.. 정확히 내가 찾던 것) 어렵지 않은 경우 알려주세요 한 주문을 열 때 다른 주문을 덮을 수 있도록 어떻게 만들 수 있습니까? 두 번째 수준을 조정하려고 시도했지만 작동하지 않는 경우(
Logiano가 모든 것을 한 것 같지만 테스트 중에 주문을 즉시 열고 닫습니다.
분명한. 다음과 같은 위치가 기록에 있는지 확인할 수 있습니다.
그러나 코드는 테스터에서만 작동합니다. 왜냐하면 그렇지 않으면 온라인에서 고문을 켤 때마다 마법을 변경해야 합니다.
정확히, 당신이 필요로 하는 것!
이 격자에 이 코드를 올바르게 삽입하는 방법을 알려주세요.
(직접 내기를 하면 테스터는 첫 번째 포지션의 오프닝에서 그냥 멈춥니다)
rid 감사합니다.. 정확히 내가 찾던 것) 어렵지 않은 경우 알려주세요 한 주문을 열 때 다른 주문을 덮을 수 있도록 어떻게 만들 수 있습니까? 두 번째 수준을 조정하려고 시도했지만 작동하지 않는 경우(
Logiano가 모든 것을 한 것 같지만 테스트 중에 주문을 즉시 열고 닫습니다.
한 번 여기에서 포지션 마감을 처리했습니다.
https://www.mql5.com/ru/forum/105913
이 블록을 START 함수 안에 삽입하십시오. 처음에 Ema_1, Ema_2, Ema_3을 계산한 직후에 할 수 있습니다.
그리고 분명히 OPENING PRICE EA의 작업을 수행해야 합니다. 그렇지 않으면 MA 교차점이 거의 모든 틱에서 지속적으로 시작 위치를 닫을 것입니다.
그리고 당신이 한 방식은 온라인이 올바르게 작동하지 않기 때문입니다. 고문은 다른 고문이나 매뉴얼이 개설한 포지션을 포함하여 모든 포지션을 폐쇄합니다.
그러나 더 쉽게, 나는 이미 그것을 하는 방법을 썼습니다. 위치를 열 때 NumberOfPositions(NULL,OP_BUY,Magic) 대신 NumberOfPositions(NULL,OP_SELL,Magic) 대신 설정하십시오.
NumberOfPositions(NULL,-1,Magic)
그러면 시장에는 항상 하나 이상의 위치가 없습니다. 폐쇄 블록이 없습니다.