프로젝트 열기 - DIY 테스터 최적화 도구 - 페이지 3

 
여기에 소스를 게시했습니다 - http://forexsystems.ru/phpBB/viewtopic.php?p=4379#4379
삭제해야 했던 댓글을 볼 수 있습니다.
TradeOrdersArray 및 ClosedOrdersArray 배열의 목적이 여기에 설명되어 있습니다. 글쎄, 조금 더.
 
OrderSend 거래 기능을 재정의했습니다.
CorrectPrice() 및 DrawArrowOnChart() 함수는 아직 정의되지 않았습니다.
여기에 게시됨 - http://forexsystems.ru/phpBB/viewtopic.php?p=4380#4380

init() 블록에서 헤더로 모든 변수를 끌어야 했습니다. 그렇지 않으면 변수가 표시되지 않습니다. 내 첫 번째 실수.
둘째, 컴파일러는 함수에서 기본 매개변수 값을 NULL로 설정하려고 시도할 때 맹세합니다.
셋째, 컴파일러는 코드에서 정의되지 않은/정의되지 않은 함수(CorrectPrice() 및 DrawArrowOnChart())를 만나면 맹세하지 않습니다.
아마도 그는 NULL로 비틀거리며 더 이상 욕을 하지 않을 것입니다.
엉뚱하게 함수 정의를 했네요 - 사전에서 복사해서 왔는데 개발자들이 잘못된 선언으로 저를 꾸짖으면 ....

  //+------------------------------------------------------------------+
//| Redefine OrderSend() function                       |
//+------------------------------------------------------------------+


int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit,
 string comment=[b]NULL[/b],int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;
      TradeOrdersArray[myOrdersTotal,3]=cmd;
      TradeOrdersArray[myOrdersTotal,4]=volume;
      TradeOrdersArray[myOrdersTotal,5]=price;
      TradeOrdersArray[myOrdersTotal,6]=slippage;
      TradeOrdersArray[myOrdersTotal,7]=stoploss;
      TradeOrdersArray[myOrdersTotal,8]=stoploss;
      TradeOrdersArray[myOrdersTotal,9]=comment;
      TradeOrdersArray[myOrdersTotal,10]=magic;
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }



내일 나는 OrderClose()를 재정의하려고 노력할 것입니다. 거기에서 테스트하는 아이디어를 설명하는 것이 더 쉬울 것입니다.
PS 두 사람이 이미 다운로드했습니다 - 희망이 있습니다

 
삭제해야 했던 댓글을 볼 수 있습니다.

Rosh, 이 포럼에 러시아어 텍스트를 삽입하는 방법을 알아냈습니다.
편집기에서 코드를 복사할 때 러시아어가 있어야 합니다. 러시아어로 어떻게 쓰나요? 그리고 포럼에 각각 삽입될 때도 마찬가지입니다.
그리고 모든 댓글은 저장됩니다 ;)
 
레나트, 슬라바
다음은 빈 문 에 대해 논의할 수 있는 좋은 예입니다.
암시적 유형 변환은 ";"보다 훨씬 더 나쁘고 위험합니다. 브래킷 후.
이 경우 명확한 오류가 있지만 컴파일러는 경고도 발행하지 않습니다.

로쉬,
페이지가 다시 사라졌습니다.
 
한 번 더 시도:

int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;// записали иструмент
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;// записали номер в списке терминала
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;// записали номер тикета у брокера
      TradeOrdersArray[myOrdersTotal,3]=cmd;// записали тип ордера
      TradeOrdersArray[myOrdersTotal,4]=volume;// записали размер ордера
      TradeOrdersArray[myOrdersTotal,5]=price;// записали цену открытия
      TradeOrdersArray[myOrdersTotal,6]=slippage;// записали проскальзывание в пунктах
      TradeOrdersArray[myOrdersTotal,7]=stoploss;// записали stoploss
      TradeOrdersArray[myOrdersTotal,8]=stoploss;// записали takeprofit
      TradeOrdersArray[myOrdersTotal,9]=comment;// записали комментарии
      TradeOrdersArray[myOrdersTotal,10]=magic;// записали MagicNumber
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;// записали дату выставления/открытия ордера
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }
//+------------------------------------------------------------------+
 
본문에 심각한 오류가 있습니다.
 
감사합니다. 간결함은 재치의 영혼입니다.
 
로쉬,
나는 단지 Renat가 직접 보고 실수를 찾기를 원했습니다.
그러나 그들은 여기를 보지 않거나 내 게시물이 바보라고 생각하지 않는 것 같습니다.
(cit. - "우리는 어리석은 질문에 대답하지 않습니다..") - :))

이것은 MQL 구문(및/또는 컴파일러)의 단점에 관한 것입니다.
컴파일러는 경고를 받았을 수 있지만 어떤 식으로든 이 오류에 반응하지 않습니다.
그리고 나는 이것을 언어로 금지할 것입니다(암시적 유형 변환).

구체적으로.
TradeOrdersArray 배열은 double 유형 입니다.
여러 곳에서 문자열 값을 할당합니다.
예를 들어:
TradeOrdersArray[myOrdersTotal,0]= symbol;


컴파일러는 이 모든 것을 먹고 테스터도 작동하지만 원하는 대로 작동하지 않습니다.
그리고 그러한 실수를 찾는 것은 매우 어렵습니다. 특히 한 달 전에 만든 경우,
그러나 그것은 내가 프로그램에 몇 줄을 추가했을 때만 오늘 나타났습니다.

(Plz., 스크립트 수정 - 페이지가 떠났습니다. 그렇지 않으면 보기가 불편합니다.)

 
그러면 다른 유형의 데이터가 저장될 배열을 어떻게 정의할 수 있습니까?
이 광고의 경우
문자열 주석=NULL
컴파일러가 불평합니다.
그러나 나는 템플릿으로 사전에서 복사했습니다.
 
그러면 다른 유형의 데이터가 저장될 배열을 어떻게 정의할 수 있습니까?

나는 그렇지 않다고 생각한다.
2개의 다른 어레이에서만 가능합니다.