[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 262

 
Valdemar :

여러분, 이 시간 기반 함수를 EA 코드에 삽입할 때 실수한 부분을 말하지 마십시오.

컴파일러에서 오류가 발생했습니다.



다른 함수 내에서 함수를 선언한 위치:

 int init()
  {
  
bool isTradeTimeInt ( int hb= 05 , int mb= 50 , int he= 23 , int me= 00 ) 
    {
 
Roll :

지정된 함수의 10번째 매개변수를 참조하십시오. 0으로 설정합니다.

OrderSend (g_symbol_284, OP_BUY, lot, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "최신", MediumBlue);

이 줄을 찾았고 거기에서 무엇을 변경해야 합니까?

 
Starting :

사용법은 간단 합니다. 스크립트를 실행 중입니다. ..

Q.E.D. 즉, 원하는 순서를 결정 하는 코드가 필요합니다 . 이러한 상황은 수십 가지가 있으며 코드를 단순화하기 위해 각 특수 기능에 대해 저장할 수 없습니다. 각각의 특정 경우에 대해 작성해야 합니다.
적절한 기능의 예는 여기에서 찾을 수 있습니다: KimIV의 유용한 기능

완성된 것이 맞지 않으면 기존의 것과 유추하여 필요한 것을 구성할 수 있습니다.
 
Bicus :

다음은 가격 관성에 대한 계산입니다. 저것들. 첫 번째 주문의 손절매가 발동되었고, 두 번째 주문은 손실보다 약간 적은 가치만큼 이익을 얻었습니다. 가격이 같은 방향으로 조금 더 움직이면 예, 총 플러스로 끝날 수 있습니다.

그러나 IMHO, 그러한 전략은 가치가 없습니다.

네, 정확히! 주제에 대한 추측 : 수익성있는 방향으로 몇 핍이라도 갈 것입니까? :)
 
granit77 :
Q.E.D. 즉, 원하는 순서를 결정 하는 코드가 필요합니다 . 이러한 상황은 수십 가지가 있으며 코드를 단순화하기 위해 각 특수 기능에 대해 저장할 수 없습니다. 각각의 특정 경우에 대해 작성해야 합니다.
적절한 기능의 예는 여기에서 찾을 수 있습니다: KimIV의 유용한 기능

완성된 것이 맞지 않으면 기존의 것과 유추하여 필요한 것을 구성할 수 있습니다.


문제의 본질을 잘 전달하지 못한 것 같습니다.

명령문 1. 보류 중인 주문이 실행된 후 이 주문의 개시 날짜에 액세스할 때 모든 코드(실행된 시점에 시장 주문이 됨)는 보류 중인 설정 날짜와 동일한 개시 날짜를 수신합니다. OrderOpenTime() 함수가 작동합니다.

진술 2. 전문가 고문이 계정의 주문 상태를 지속적으로 모니터링하지 않으면 보류 중인 트리거의 정확한 시간을 기억할 수 없습니다.


가능한 해결책 1. 보류 날짜부터 현재 날짜까지 bar-by-bar로 실행하고 보류 트리거 수준과 시가가 처음 교차하는 시간을 기록합니다.

어느 정도 정확한 시간이 되겠지만, 스프레드라는 큰 단점이 있습니다. 왜냐하면 스프레드는 역사에 기록되지 않았습니다(예를 들어 Dukas의 스프레드가 있는 진드기 역사 버전은 여기에서 다루지 않습니다. 지금은 Dukas와 그녀를 거래하지 않기 때문에 스프레드가 있는 이러한 역사는 다음을 수행해야 합니다. 쓰기 및 누적), 아마도 가격이 시작 수준에 거의 도달했지만 교차하지 않은 훨씬 더 일찍 주문이 작동했을 수 있으며 확장 된 스프레드로 인해 주문이 이미 열렸고 나중에는 실제를 볼 때 열리지 않았습니다. 가격에 의한 보류 라인의 교차.


가장 가능성 있는 솔루션은 Expert Advisor를 만들어 차트에 매달고 계정의 주문을 모니터링하는 것입니다. 나는 이것을하고 싶지 않습니다. 여러 가지 이유로 Expert Advisor의 작업에서 휴식 시간 동안 가능한 문제와 관련된 단점이 있지만 다른 생각은 아직 일어나지 않아야한다는 것을 알 수 있습니다.


기능, 고양이에 관한 것. OrderOpenTime() 함수를 호출할 수 있는 링크를 제공했습니다. 작동한 지연자의 경우 트리거된 날짜가 아니라 설정된 날짜가 됩니다. 따라서 사용 가능한 기능이 적합하지 않습니다. 그리고 그것들을 정리할 방법도 없습니다. 왜냐하면. 어쨌든 주문 시작 날짜에 대해 OrderOpenTime()에 적용됩니다.

 
Pyxlik2009 :

OrderSend(g_symbol_284, OP_BUY, lot, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "최신", MediumBlue);

이 줄을 찾았고 거기에서 무엇을 변경해야 합니까?

인쇄 매개변수를 통한 출력 및 참조
 
Pyxlik2009 :

OrderSend(g_symbol_284, OP_BUY, lot, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "최신", MediumBlue);

이 줄을 찾았고 거기에서 무엇을 변경해야 합니까?

열 번째 매개 변수 "최신" 이 있고 숫자가 필요합니다 - 주문 만료 시간
 

여기 전체 라인이 있습니다

if (!( AccountFreeMarginCheck (g_symbol_284, OP_BUY, Lots) <= 0.0 || GetLastError () == 134 /* NOT_ENOUGH_MONEY */ )) g_ticket_352 = OrderSend (g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0 , g_magic_112, "Newest RX-1" , MediumBlue );
 
 
Pyxlik2009 :

여기 전체 라인이 있습니다

다시:

선적 서류 비치:

int OrderSend (문자열 기호, int cmd, 이중 볼륨, 이중 가격, int 미끄러짐, 이중 손절매, 이중 이익실현, string comment=NULL, int magic=0, datetime 만료=0 , color arrow_color=CLR_NONE)

"최신" 행에 10번째 매개변수가 있습니다. 이는 숫자가 아닙니다. 그렇기 때문에 오류가

 

PapaYozh
:


다른 함수 내에서 함수를 선언한 위치:

 int init()
  {
  
bool isTradeTimeInt ( int hb= 05 , int mb= 50 , int he= 23 , int me= 00 ) 
    {


PapaYozh 님 , 피드백 감사합니다. 하지만 이 함수를 int start()에도 삽입했는데 컴파일러 결과가 전혀 바뀌지 않습니다.

 int start()
{
int H,M,Ticket;
double Max,Min,
Max1,Min1,
TP,
Total;

bool isTradeTimeInt( int hb= 07 , int mb= 55 , int he= 23 , int me= 00 ) 
    {
   datetime db, de;           // Время начала и окончания работы
   int       hc;               // Часы текущего времени торгового сервера

  db= StrToTime ( TimeToStr ( TimeCurrent (), TIME_MINUTES)+ " " +hb+ ":" +mb);
  de= StrToTime ( TimeToStr ( TimeCurrent (), TIME_MINUTES)+ " " +he+ ":" +me);
  hc= TimeHour ( TimeCurrent ());
   if (db>=de) {
     if (hc>=he) de+= 24 * 60 * 60 ; else db-= 24 * 60 * 60 ;
  

   if ( TimeCurrent ()>=db && TimeCurrent ()<=de) return (True);
   else return (False);
}
 

H= Hour ();
M= Minute ();
Total= OrdersTotal ();
if (Total== 0 )
{
if (isTradeTimeInt==true)
{
   Max=High[ iHighest ( Symbol (), PERIOD_M5 ,MODE_HIGH, 12 , 0 )];
   Min=Low[ iLowest ( Symbol (), PERIOD_M5 ,MODE_LOW, 12 , 0 )];
결과적으로 컴파일러는 이러한 오류를 보여 주었고 내가 이해한대로 변수의 잘못된 정의를 나타냅니다.

불편함, 이해할 수 없음, 모두 동일하게 죄송합니다. 저는 그런 어려운 작업에서 이제 막 경험을 쌓기 시작했습니다. 이 포럼과 여기에 응답한 사람들 덕분에 저는 계속 발전하고, 제 기술을 향상시키고, 감사합니다. 너.