출시 후 다음 조건에서 5분 차트의 과정을 따를 전문가 고문: - 페이지 6

 

안녕하세요.

누가 말해 줄 수 있습니까? 기록을 파일에 빠르게 쓰는 스크립트가 있지만 파일이 열리면 녹음이 진행되지 않습니다 .... 이 스크립트를 알고 있거나 currency_loader라는 것을 본 적이 있을 것입니다.

// M1에서 히스토리 데이터 로드
무효 LoadingM1(){/1
int MaxBars=MaxBarsInFile;
if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0);}
if(ArrSizeM1>1){//2
if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}
for(i2=1; i2<=시도; i2++){//3
h1 = 파일쓰기(파일이름M1,FILE_WRITE|FILE_CSV);
if(h1==-1){LastError=GetLastError();Info("1.2",1,""," 파일을 여는 동안 오류가 발생했습니다: "+FileNameM1+" at "+i2+" 시도 "+ErrorDescription(LastError ));일시 중지=일시 중지+일시 중지; 수면(일시정지); 계속하다; }else{Info("1.2",2,"","파일 "+FileNameM1+"이(가) 성공적으로 열렸습니다. ");}
파일쓰기(h1,첫줄);
(i=MaxBars-1, i>=0, i-- ){/4
if(!USRegionSet){
CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+" "; // 막대의 날짜
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // 막대의 시간
}
또 다른{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" "; // 막대의 날짜
바타임=0;
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // 오픈 가격
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // 높은 가격
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // 저렴한 가격
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+""; // 종가
파일쓰기(h1,CString);
CString="";
}//4
파일닫기(h1);
LCM1 = iTime(Symbol(),PERIOD_M1,0);
반품;
}//삼
}//2
}//하나


내가 알기로는 핸들 어딘가에 문제가 있지만 여기에 질문이 있습니다 ...

 
Expert Advisor를 테스트하면 다음 매개변수로 이익이 표시됩니다. 코드는 다음과 같습니다.
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern double StopLoss=30;                          // Stop Loss
extern double TakeProfit=3;                         // Take Profit
extern double Lots=0.02;                          // Объем сделки в %
extern double Slippage =4;                         // Максимальное отклонение от запрошенной цены
extern double Delta=30;                             // Сигнал приказа в пунктах
extern double MagicNumber ;                   // Order ID
int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
어쨌든 작동하지 않습니다 !!!!
이유를 알아낼 수 있도록 도와주세요.
 

테스트는 어떻게 하셨나요? 작동하지 않는 경우 어떻게 이익을 표시합니까? 어떻게 작동하지 않습니까? 잡지는 무엇을 인쇄합니까? 어디 있니 테스터에서 테스트 했니? 아니면 온라인?

OrdersTotal 함수가 무엇인지, 무엇을 위한 것인지, 어떻게 삽입되는지 동시에 살펴보세요.

예를 들어, int total=OrdersTotal(); if(총<1) {

 
정수 시작()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //가격이 델타 포인트보다 많이 떨어졌습니다.
{
ticket=OrderSend( Symbol() ,OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"구매",MagicNumber,11111,Green);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) // 가격이 델타 포인트보다 많이 올랐다.
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sold",MagicNumber,22222,Green);
}
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
그리고 당신은 완고한 사람입니다. 작동하지만 어리석음일 뿐입니다. MetaEditor에 복사하지 않으면 +와 -를 다시 혼동하게 됩니다.
 


내가 알기로는 핸들 어딘가에 문제가 있지만 여기에 질문이 있습니다 ...

다음은 핸들을 얻는 예입니다.
int hwnd1 = WindowHandle (Symbol(), Period());
나는 당신과 같은 것을 눈치 채지 못했습니다.
Excel에서 "csv" 파일을 열면 파일이 잠겨 있고 파일에 쓰기 권한이 없는 것이 비밀입니다.
 
rid :

테스트는 어떻게 하셨나요? 작동하지 않는 경우 어떻게 이익을 표시합니까? 어떻게 작동하지 않습니까? 잡지는 무엇을 인쇄합니까? 어디 있니 테스터에서 테스트 했니? 아니면 온라인?

OrdersTotal 함수가 무엇인지, 무엇을 위한 것인지, 어떻게 삽입되는지 동시에 살펴보세요.

예를 들어, int total=OrdersTotal(); if(총<1) {

테스터로 테스트했습니다. 다른 방법은 무엇입니까? :)
이익 504, 거래 수 432, 드로우다운 $788, 7.31%를 보여줍니다. 설정에서 03/17/08에서 03/19/08로 파운드당 m5를 설정했습니다.
그리고 차트에 올려보니 제 거래조건은 충족되었는데 전문가는 아무것도 안하더군요.......
 
zhuki :
정수 시작()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //가격이 델타 포인트보다 많이 떨어졌습니다.
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"구매",MagicNumber,11111,Green);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) // 가격이 델타 포인트보다 많이 올랐다.
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sold",MagicNumber,22222,Green);
}
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
그리고 당신은 완고한 사람입니다. 작동하지만 어리석음일 뿐입니다. MetaEditor에 복사하지 않으면 +와 -를 다시 혼동하게 됩니다.
만세!!!!!! 정말 감사합니다. 벌었다.
 
 
질문하기 너무 부끄러워 :)))
내 Expert Advisor가 하나의 거래만 열고 완료될 때까지 다른 거래는 열지 않도록 하려면 어떻게 해야 합니까?
 
salesman77 :
질문하기 너무 부끄러워 :)))
내 Expert Advisor가 하나의 거래만 열고 완료될 때까지 다른 거래는 열지 않도록 하려면 어떻게 해야 합니까?

모든 열린 위치 를 통해 루프를 구성하고 현재 기호 및 마법을 준수하는지 확인하십시오. 아무 것도 없으면 녹색 표시등을 켜십시오. 코드베이스는 거의 모든 Expert Advisor에서 이러한 예제로 가득 차 있습니다.