KimIV의 유용한 기능 - 페이지 8

 

예, 질문은 끝이 없습니다 ...
의미에서 그들은 끊임없이 발생하지만 상황에 따라.

에디터에서 '느낌' 없이 그냥 보기 때문에 지금 공개된 기능은 없습니다.
또한 그 외에도 초기 코드, 특히 후행에 대한 질문이 있습니다.
위의 내용과 함께: 예를 들어 함수에 전달하는 방법, 이유, 나는 후행의 이 부분에 대해 의아해했습니다.

 //+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss ( double ldStopLoss ) {
  bool fm ;
  fm = OrderModify ( OrderTicket () , OrderOpenPrice () , ldStopLoss , OrderTakeProfit () , 0 , CLR_NONE ) ;
  if ( fm ) PlaySound ( " expert.wav " ) ;
}
ldStopLoss의 역할은 불분명...
 

와우... :-) 정말 오래된 기능입니다. 이전에 열린 위치 또는 설정된 주문의 정지 수준을 변경하도록 설계되었습니다. 테이크에도 비슷한 기능이 있었다. 둘 다 보다 고급스럽고 기능적인 ModifyOrder() 로 대체되었습니다.

kombat :
ldStopLoss의 역할은 불분명...

StopLoss를 ModifyStopLoss 함수로 설정해야 하는 가격 수준을 전달하는 데 사용되는 로컬 변수 입니다. 예를 들어 다음과 같이 ModifyStopLoss 함수를 호출해 보겠습니다.

 ModifyStopLoss ( 1 , 5662 ) ;

그런 다음 지역 변수 ldStopLoss는 1.5662 값을 갖습니다. 이것은 다음과 같은 방법으로 확인할 수 있습니다.

 //+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss ( double ldStopLoss ) {
  bool fm ;
 
  Print ( " ldStopLoss= " , ldStopLoss ) ;
 
  fm = OrderModify ( OrderTicket () , OrderOpenPrice () , ldStopLoss , OrderTakeProfit () , 0 , CLR_NONE ) ;
  if ( fm ) PlaySound ( " expert.wav " ) ;
}

로그에는 다음 항목이 있습니다.

 <Время> <Эксперт> <Инструмент>,<таймфрейм>: ldStopLoss = 1.5662
 
KimIV :

와우... :-) 정말 오래된 기능입니다. 이전에 열린 위치 또는 설정된 주문의 정지 수준을 변경하도록 설계되었습니다. 테이크에도 비슷한 기능이 있었다. 둘 다 보다 고급스럽고 기능적인 ModifyOrder() 로 대체되었습니다.


글쎄, 그래서... 고대의 것들은... (당황한 것처럼 :)))
폴더를 훑어보니 가장 오래된 파일의 날짜는 2006년 1월 22일입니다.
그리고 내 krivoruchkas로 까다롭지 않은 것 같습니다 ...
고백합니다. 저는 오랫동안 간단한 것을 연습해 왔습니다. 예를 들어 거기에서 숫자를 변경하는 것입니다.
간단한 계산기 등...

그것은 모두 거래 포럼 중 하나에 고문을 작성하라는 요청으로 시작되었지만 ...
그런 다음 차트에 정보를 표시하는 표시기가 필요했고 계속 갔다.
이제 마약중독자처럼 푹 빠져버렸어... ;) 내가 뭐지? 편리함... 모든 것이 있습니다... 편집기 등, 컴팩트하고 휴대 가능합니다.

Delfu 6을 전달하려는 처음이자 마지막 시도를 기억하면서... 그래서 나는 떨릴 것입니다.
지금까지 그 한 쌍의 디스크가 선반에 먼지를 모으고 있습니다 ... :))) 주제를 벗어나서 죄송합니다 .


즉, 함수()의 괄호 안에 있는 것은 특정 매개변수를 전달하기 위한 일종의 "형식"입니까?


어떤 이유에서인지 반대가 생각났기 때문입니다. 이것은 처리 결과로 함수 가 반환 하는 매개변수입니다.
또한 함수가 중괄호 내에서 처리하기 위한 매개변수를 수신한다는 사실도...{}

 void TrPos () {
if ( OrderType () == OP_BUY ) {
    if ( ( Bid - OrderOpenPrice ()) > TrailingStop * Point ) {
      if ( OrderStopLoss () < Bid - TrailingStop * Point ) {
        ModifyStopLoss ( Bid - TrailingStop * Point ) ;
        return ;
      }
    }
  }
// в качестве примера !!! просто выдраный кусок кода!

저것들. 이 모든 Bid, Point 등은 입력 매개변수입니다.

분명히 그는 크게 착각했습니다 ... 그리고 대괄호 ()에서 처리를 위해 매개 변수를 함수에 전달할 수 있다는 사실,
동시에, 함수 자체는 실제 스크립트 코드의 임의의(또는 다른) 위치에 있을 수 있습니다...

그래서?

 
질문은 - OpenPosition과 달리 ModifyOrder에 오류 처리 가 없는 이유는 무엇입니까? 수정시에도 다양한 오류가 있습니다. 모든 오류 처리 블록에 대해 개별적으로 설치, 수정 및 닫기 기능을 사용하고 싶습니다. 코드가 적고 작성하기 쉽고 더 빨리 작동합니다... 제가 뭔가 잘못 알고 있다면 - 정정 해줘 ..
 
좋은 오후, 이고르! 실제 생활(Alpari DC)에서는 모든 형태의 트롤을 사용하는 전문가 고문 및 스크립트를 사용하는 데 문제가 있었습니다. 저는 특히 e-News-Lucky$(내 시스템에 이상적임), e-TFL_v2, Set2StopOrders, e-SotTrailing에 관심이 있습니다. 그들은 데모(또한 Alpari)에서 작업합니다. 오류 메시지 는 표시되지 않습니다. 뭐가 될수 있었는지? 그리고 질문 하나 더. e-News-Lucky$에서 시간 참조를 해제하여 언제든지 로그인 및 로그아웃하는 방법은 무엇입니까? 고맙습니다!
 
ag-forex писал (а):
좋은 오후, 이고르! 실제 생활(Alpari DC)에서는 모든 형태의 트롤을 사용하는 전문가 고문 및 스크립트를 사용하는 데 문제가 있었습니다. 저는 특히 e-News-Lucky$(내 시스템에 이상적임), e-TFL_v2, Set2StopOrders, e-SotTrailing에 관심이 있습니다. 그들은 데모(또한 Alpari)에서 작업합니다. 오류 메시지는 표시되지 않습니다. 뭐가 될수 있었는지?
이 문제는 이 DC의 기술 지원 서비스에 문의하여 반복적으로 해결되었습니다.
 
kombat писал (а):
즉, 함수()의 괄호 안에 있는 것은 특정 매개변수를 전달하기 위한 일종의 "형식"입니까?

글쎄요 ... 컨테이너 같은 것 :-)

kombat 은 다음과 같이 썼습니다.
어떤 이유에서인지 반대가 생각났기 때문입니다. 이것은 처리 결과로 함수 가 반환 하는 매개변수입니다.

함수가 반환하는 것은 반환 값입니다. 간단한 예를 들어 드리겠습니다. 두 개의 숫자를 더하는 함수를 정의합니다.

 int f ( int a , int b ) {
  int x ;
  x = a + b ;
  return ( x ) ;
}

따라서 이 함수를 다음과 같이 호출하면

 int y ;
y = f ( 3 , 5 ) ;

숫자 3과 5는 함수 f의 매개변수입니다. 숫자, 변수, 표현식은 함수 매개변수로 작동할 수 있습니다. 변수 a와 b는 매개변수 값을 취하여 함수에 주는 지역 변수 입니다. 변수 x는 함수 f의 반환 값입니다. 즉, 함수 f를 호출한 후 변수 y는 변수 x가 전달한 값, 즉 8을 취합니다.

전투 :

또한 함수가 중괄호 내에서 처리하기 위한 매개변수를 수신한다는 사실도...{}

 void TrPos () {
if ( OrderType () == OP_BUY ) {
    if ( ( Bid - OrderOpenPrice ()) > TrailingStop * Point ) {
      if ( OrderStopLoss () < Bid - TrailingStop * Point ) {
        ModifyStopLoss ( Bid - TrailingStop * Point ) ;
        return ;
      }
    }
  }
// в качестве примера !!! просто выдраный кусок кода!

저것들. 이 모든 Bid, Point 등은 입력 매개변수입니다.

아니요... ModifyStopLoss 함수의 매개변수는 Bid-TrailingStop*Point 표현식의 값이 됩니다.

전투 :

분명히 그는 크게 착각했습니다 ... 그리고 대괄호 ()에서 처리를 위해 매개 변수를 함수에 전달할 수 있다는 사실,
동시에, 함수 자체는 실제 스크립트 코드의 임의의(또는 다른) 위치에 있을 수 있습니다...

그래서?

 
sasa999 :
질문은 - OpenPosition과 달리 ModifyOrder에 오류 처리가 없는 이유는 무엇입니까?

어디선가 도로의 규칙이 피로 쓰여 있다는 표현을 들었습니다. 그리고 그들 안에는 아무것도 없습니다. 모든 말 뒤에는 사고로 잃은 거의 누군가의 삶이 있습니다.

나는 내 경험에 따라 내 기능을 작성하고 내 관행에서 발생한 오류의 처리를 포함하며 이 처리는 생략할 수 없습니다. 내가 시장에 진입 하려고 할 때 보여주는 최대한의 "정중함"(오류 처리) . 수정하는 동안 대부분의 오류는 가격 정규화 및 간단한 값 확인으로 제거됩니다. 수정 자체 중에 오류가 발생하면 다음 틱에서 수정이 이미 정상적으로 진행됩니다. 닫을 때도 마찬가지입니다.

 

이 함수에 pp - 주문 시가를 전달하는 목적은 무엇입니까?

 void ModifyOrder ( double pp =- 1 , double sl = 0 , double tp = 0 , color cl = CLR_NONE )

색상도 맨 처음에 선언되어 있습니다... test_ModifyOrder.mq4 (12.14 KB) ..사용하지 않고 함수에 다시 보내십시오.

 color clModifyBuy = Aqua ; // Цвет значка модификации покупки
color clModifySell = Tomato ; // Цвет значка модификации продажи
장점은 무엇입니까
 int dg = MarketInfo ( OrderSymbol () , MODE_DIGITS ) , er , it ;
pp = NormalizeDouble ( pp , dg ) ;

짧은 형식 전에

 pp = NormalizeDouble ( pp , Digits ) ;

OrderOpenPrice () 를 정규화해야 하는 이유는 무엇입니까? 영장과 같은 형식이 아닙니까?

 op = NormalizeDouble ( OrderOpenPrice () , dg ) ;
지금까지 수정하는 동안 같은 것을 다시 삽입해도 실수를 눈치채지 못했습니다. OrderStopLoss() 및 OrderTakeProfit()과 동일
 
sasa999 :

이 함수에 pp - 주문 시가를 전달하는 목적은 무엇입니까?

 void ModifyOrder ( double pp =- 1 , double sl = 0 , double tp = 0 , color cl = CLR_NONE )

OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT 및 OP_SELSTOP 주문을 이동하기 위한 목적입니다.

sasa999 :

색상도 맨 처음에 선언되어 있습니다... test_ModifyOrder.mq4 (12.14 KB) ..사용하지 않고 함수에 다시 보내십시오.

 color clModifyBuy = Aqua ; // Цвет значка модификации покупки
color clModifySell = Tomato ; // Цвет значка модификации продажи

고맙습니다! 사용하겠습니다!

sasa999 :
장점은 무엇입니까
 int dg = MarketInfo ( OrderSymbol () , MODE_DIGITS ) , er , it ;
pp = NormalizeDouble ( pp , dg ) ;

짧은 형식 전에

 pp = NormalizeDouble ( pp , Digits ) ;

EA가 현재 도구의 위치와 주문뿐만 아니라 다른 도구와도 작업할 수 있도록 하는 다용성. 예를 들어, 고문은 EURUSD 차트에서 작업합니다. Digits 옵션을 사용하면 USDJPY에 개설된 위치로 작업할 수 없습니다.

sasa999 :

OrderOpenPrice () 를 정규화해야 하는 이유는 무엇입니까? 영장과 같은 형식이 아닙니까?

 op = NormalizeDouble ( OrderOpenPrice () , dg ) ;

이중 값을 성공적으로 비교하려면. 정규화하지 않으면 비교할 수 없거나 오히려 무의미합니다.

sasa999 :
수정하는 동안 같은 것을 다시 삽입해도 실수를 눈치채지 못했습니다. OrderStopLoss() 및 OrderTakeProfit()과 동일
정규화하지 않으면 함수에서 오류 1이 발생합니다( OrderModify 는 이미 설정된 값을 동일한 값으로 변경하려고 시도합니다.)
사유: