Lütfen anlamsız gönderiler yapmayı bırakın ve daha fazla forum üyesini rahatsız etmeyin.
Dük. Saat dilimini sordum ve global düzeyde değişkenleri fonksiyonlarla başlatma yeteneğinin iptal edilmesinin gerekli olmadığı kanaatini dile getirdim.
Grafiğe katılırken, 2016.02.11 00:21:02.663 'MoyforNeuro' uzman değil ve yürütülemez diyor, derleyici herhangi bir hata vermiyor, her şey daha önce iyi çalışıyordu, ancak yeni yapıların yayınlanmasından sonra, sorun! Lütfen bana onun nesi olduğunu söyle, işte uzmanın kendisi
//+------------------------------------------------------------------+//| Excel_Neuro.mq4 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property strictinputstring FileName = "OrderEU.txt" ; //- Имя файла в каталоге TerminalPath()+"\experts\files",// с которого будут считываться данные о изменениях в ордерах.inputint MagicStart = 99 ; //- Эксперт удаляет только ордера, магики которыхinputint MagicEnd = 999 ; // входят в указанный здесь интервалinputint Sensitivity = 30 ; //- Чувствительность сигнала в пунктах.//extern double NewRisk = 1.0; //- Коэффициент изменения риска//extern bool LittleLots = true; //- Если true, то при лоте меньше минимальнодопустимого на этом счёте, будет открыт минимальный лотinputint Stoploss = 30 ;
inputint SP = 30 ; //- SleepPage - предельное отклонение от цены//--------------------------------------------------------------------------externdouble Time_shift= 15 ;
//---------------------------------------------------------------------------int OCount= 0 ;
int OMagic[ 1000 ];
string OSymbol[ 1000 ];
double OType[ 1000 ];
double ORisk[ 1000 ];
double OOP[ 1000 ];
double OSL[ 1000 ];
double OTP[ 1000 ];
//---------------------------------------------------------------------------int start() {
//-----------------------------------------------------------------------------------int magic= 0 ;
int _GetLastError = 0 , _OrdersTotal = OrdersTotal ();
//bool ALLRIGHT=true;if (!FileExist(FileName)) return ( 0 );
FileLoad(FileName);
//Удаляем старыеif (CloseAllBeingAbsentPozitions()< 0 ) return ( 0 );
//Корректируем существующиеfor ( int i= 0 ; i<OCount; i++) {
magic=OrderExist( "" ,OMagic[i]);
if (magic> 0 ){
if (OrderMagicNumber()==OMagic[i]){
Print ( "Ордер с таким магиком уже существует" );
FileDelete (FileName);}
}
else
{
//Обрабатываем существующиеfor ( int q= 0 ; q<= OrdersTotal (); q++) {
if ( OrderSelect (q,SELECT_BY_POS, MODE_TRADES)){
Print ( "Выбрал ордер " , OrderMagicNumber(), "Всего ордеров " , OrdersTotal ());
if (OrderType()==OType[i]){
Print ( "Ордер по типу соответствует последнему сигналу" );
MODIFY(OSymbol[i], magic, OSL[i], OTP[i]);
}
elseif (OrderType()!=OType[i]){
Print ( "Удалим ордера другого типа" );
//if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);return(0);}//if(OrderType()==OP_SELL){ OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);return(0);}
}
}
}
//Открываем новые позиции if (OType[i]==OP_BUY) {
if ( MathAbs (MarketInfo(OSymbol[i],MODE_ASK)-OOP[i])<Sensitivity*MarketInfo(OSymbol[i],MODE_POINT)) {
BUY(OSymbol[i],ORisk[i], OSL[i], OTP[i], OMagic[i]);
Print ( "Удалим файл после открытия БАЙ ордера" );
FileDelete (FileName);
}
}
elseif (OType[i]==OP_SELL) {
if ( MathAbs (MarketInfo(OSymbol[i],MODE_BID)-OOP[i])<Sensitivity*MarketInfo(OSymbol[i],MODE_POINT)) {
SELL(OSymbol[i],ORisk[i], OSL[i], OTP[i], OMagic[i]);
Print ( "Удалим файл после открытия СЕЛЛ ордера" );
FileDelete (FileName);
}
}
}
} //Next ireturn ( 0 );
} //start()//---------------------------------------------------------------------------bool FileExist( string file) {
int handle= FileOpen (file, FILE_BIN );
if (handle< 0 ) {
return ( false );
} else {
FileClose (handle);
return ( true );
}
} //FileExist()//---------------------------------------------------------------------------int FileLoad( string file) {
int i= 0 , j= 0 ; double k= 0 ;
string buffer[ 1000 ];
int handle= FileOpen (file, FILE_BIN );
if (handle< 0 ) {
return (- 1 );
} else {
k= FileReadArray (handle,buffer, 0 , 1000 );
FileClose (handle);
//OCount=0;//while(!StringTrimRight(StringTrimLeft(buffer[OCount]))=="") {for (OCount= 0 ; OCount<k; OCount++) {
i = StringFind (buffer[OCount], " " , 0 );
ORisk[OCount]=StrToDouble( StringSubstr (buffer[OCount], 0 ,i));
j=i+ 1 ;
i = StringFind (buffer[OCount], " " ,j);
OMagic[OCount]=( int )StrToDouble( StringSubstr (buffer[OCount], j,i-j));
j=i+ 1 ;
i = StringFind (buffer[OCount], " " ,j);
OSymbol[OCount]= StringSubstr (buffer[OCount], j,i-j);
j=i+ 1 ;
i = StringFind (buffer[OCount], " " ,j);
OType[OCount]=StrToDouble( StringSubstr (buffer[OCount], j,i-j));
j=i+ 1 ;
i = StringFind (buffer[OCount], " " ,j);
OOP[OCount]=StrToDouble( StringSubstr (buffer[OCount], j,i-j));
j=i+ 1 ;
i = StringFind (buffer[OCount], " " ,j);
OSL[OCount]=StrToDouble( StringSubstr (buffer[OCount], j,i-j));
j=i+ 1 ;
OTP[OCount]=StrToDouble( StringSubstr (buffer[OCount], j, 0 ));
//OCount++;
} //Next OCount
}
return (- 1 );
} //FileLoad()//+------------------------------------------------------------------+int OrderExist( string fSymbol= "" , int fMagic= 0 , int fType=- 1 ) {
int total = OrdersTotal ();
for ( int i = total- 1 ; i >= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol()==fSymbol || fSymbol== "" ) {
if (OrderMagicNumber()==fMagic || fMagic== 0 ) {
if (OrderType()==fType||fType==- 1 ) {
return (OrderTicket());
}
}
} // Если свой
} // Next ireturn (- 1 );
} //OrderExist()//+------------------------------------------------------------------+int CloseAllBeingAbsentPozitions() {
int Cur_Hour=Hour(); // Серверное время в часах//double Cur_Min =Minute(); // Серверное время в минутах//double Cur_time=Cur_Hour; //+ Cur_Min/100; // Текущее времяint LE;
int y,x= 100 ;
double PriceClose= 0 ,z= 0 ;
bool Del;
int total = OrdersTotal ();
for ( int i = total- 1 ; i >= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
while (x< 124 ){
x++;
y= 24 ;
if (x- 101 +Time_shift-y< 0 ){
y= 0 ;
}
else {
y= 24 ;}
z=x- 101 +Time_shift-y;
Print ( "Закрываем ордера, Номер магика X= " ,x- 1 , " Выбрал ордер с магиком " ,OrderMagicNumber(), " Время закрытия " ,z);
if (OrderMagicNumber()==x&&Cur_Hour==z) continue ;
Del= true ;
}
for ( int j= 0 ; j<OCount; j++) {
if (OrderMagicNumber()==OMagic[j]) {
Del= false ;
break ;
}
}
if (Del) {
if (OrderType()> 1 &&OrderType()< 6 )
if (OrderDelete(OrderTicket())== true )
Print ( "Ордер удален" );
else {
LE= 135 ;
while (LE> 134 && LE< 139 ) {
if (OrderType()==OP_BUY) {
PriceClose=MarketInfo(OrderSymbol(),MODE_BID);
} elseif (OrderType()==OP_SELL) {
PriceClose=MarketInfo(OrderSymbol(),MODE_ASK);
}
if (OrderClose(OrderTicket(),OrderLots(),PriceClose,SP))
LE = GetLastError ();
if (LE> 0 ) Print ( "СтаФФка не закрывается по причине ашипки № " ,LE);
}
if (LE> 0 ) return (- 1 );
}
}
}
} // Next ireturn ( 0 );
} //CloseAllPozitions()//+------------------------------------------------------------------+int MODIFY( string mySymbol, int magic, double sl = 0 , double tp = 0 ) {
double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT);
Print ( "Пытаемся модифицировать" ,OrderMagicNumber());
//for(int i=0; i<OCount; i++) {//for (magic=100; magic <= 123; magic++) {//if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
magic=OrderMagicNumber();
if ( OrderSelect (magic, SELECT_BY_TICKET)) {
double SLo=OrderStopLoss();
double TPo=OrderTakeProfit();
//sl=NormalizeDouble(sl,MarketInfo(mySymbol,MODE_DIGITS));//tp=NormalizeDouble(tp,MarketInfo(mySymbol,MODE_DIGITS));if (OrderType()==OP_BUY) {
Print ( "Проверяем, является ли ордером БАЙ , тип ордера " ,OrderType());
if ( NormalizeDouble (sl, Digits )> NormalizeDouble (SLo, Digits )) {
sl= NormalizeDouble (sl,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
else {
sl= NormalizeDouble (SLo,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
if ( NormalizeDouble (tp, Digits )< NormalizeDouble (TPo, Digits )) {
tp= NormalizeDouble (tp,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
else {
tp= NormalizeDouble (TPo,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
if (sl> 0 ) {
Print ( "Проверяем, есть ли у ордера с/л " ,OrderStopLoss());
if (MarketInfo(mySymbol,MODE_BID)-sl<stoplimit) {
Print ( "Слишком близкий стоп (" ,(MarketInfo(mySymbol,MODE_BID)-sl)/MarketInfo(mySymbol,MODE_POINT), " пунктов). Требуется не менее: " , stoplimit/MarketInfo(mySymbol,MODE_POINT));
return (- 1 );
}
}
if (tp> 0 ) {
Print ( "Проверяем, есть ли у ордера т/п " ,OrderTakeProfit());
if (tp-MarketInfo(mySymbol,MODE_ASK)<stoplimit) {
Print ( "Слишком близкий профит (" ,(tp-MarketInfo(mySymbol,MODE_ASK))/MarketInfo(mySymbol,MODE_POINT), " пунктов). Требуется не менее: " , stoplimit/MarketInfo(mySymbol,MODE_POINT));
return (- 1 );
}
}
} elseif (OrderType()==OP_SELL) {
Print ( "Проверяем, является ли ордером СЕЛЛ , тип ордера " ,OrderType());
if ( NormalizeDouble (sl, Digits )< NormalizeDouble (SLo, Digits )) {
sl= NormalizeDouble (sl,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
else {
sl= NormalizeDouble (SLo,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
if ( NormalizeDouble (tp, Digits )> NormalizeDouble (TPo, Digits )) {
tp= NormalizeDouble (tp,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
else {
tp= NormalizeDouble (TPo,( int )MarketInfo(mySymbol,MODE_DIGITS));
}
if (sl> 0 ) {
if (sl-MarketInfo(mySymbol,MODE_ASK)<stoplimit) {
Print ( "Слишком близкий стоп (" ,(sl-MarketInfo(mySymbol,MODE_ASK))/MarketInfo(mySymbol,MODE_POINT), " пунктов). Требуется не менее: " , stoplimit/MarketInfo(mySymbol,MODE_POINT));
return (- 1 );
}
}
if (tp> 0 ) {
if (MarketInfo(mySymbol,MODE_BID)-tp<stoplimit) {
Print ( "Слишком близкий профит (" ,(MarketInfo(mySymbol,MODE_BID)-tp)/MarketInfo(mySymbol,MODE_POINT), " пунктов). Требуется не менее: " , stoplimit/MarketInfo(mySymbol,MODE_POINT));
return (- 1 );
}
}
}
if (DoubleToStr(OrderStopLoss(),( int )MarketInfo(mySymbol,MODE_DIGITS))==DoubleToStr(sl,( int )MarketInfo(mySymbol,MODE_DIGITS)) &&
DoubleToStr(OrderTakeProfit(),( int )MarketInfo(mySymbol,MODE_DIGITS))==DoubleToStr(tp,( int )MarketInfo(mySymbol,MODE_DIGITS))) return ( 0 );
if (OrderModify(magic,OrderOpenPrice(), sl, tp, 0 )==FALSE) {
Print ( "Ошибка OrderModify(): " , GetLastError ());
return (- 1 );
}
}
return ( 0 );
} //Modify()//+------------------------------------------------------------------+int BUY( string mySymbol= "" , double lt= 0 , double sl= 0 , double tp= 0 , int mn= 0 ) {
if (mySymbol== "" ) mySymbol= Symbol ();
double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT);
int magic = - 1 ; //покупаем по цене Askint LE= 135 ;
mn=( int ) NormalizeDouble (mn,( int )MarketInfo(mySymbol,MODE_DIGITS));
if (lt<MarketInfo(mySymbol, MODE_MINLOT)) return ( 0 );
if (lt>MarketInfo(mySymbol, MODE_MAXLOT)) lt=MarketInfo(mySymbol, MODE_MAXLOT);
if (lt>AccountFreeMargin()* 0.90 /MarketInfo(mySymbol,MODE_MARGINREQUIRED)) lt=AccountFreeMargin()* 0.90 /MarketInfo(mySymbol,MODE_MARGINREQUIRED);
lt = NormalizeDouble (lt, ( int ) MathAbs ( MathLog (MarketInfo(mySymbol, MODE_LOTSTEP))/ MathLog ( 10.0 )));
if (sl> 0 ) {
sl= NormalizeDouble (sl,( int )MarketInfo(mySymbol,MODE_DIGITS));
if (MarketInfo(mySymbol,MODE_BID)-sl<stoplimit) sl=MarketInfo(mySymbol,MODE_BID)-stoplimit;
}
if (tp> 0 ) {
tp= NormalizeDouble (tp,( int )MarketInfo(mySymbol,MODE_DIGITS));
if (tp-MarketInfo(mySymbol,MODE_ASK)<stoplimit) tp=MarketInfo(mySymbol,MODE_ASK)+stoplimit;
}
while (LE> 134 && LE< 139 ) {
magic = OrderSend (mySymbol, OP_BUY, lt, MarketInfo(mySymbol,MODE_ASK), SP, sl, tp, WindowExpertName(), mn, 0 , Blue);
LE = GetLastError ();
Sleep ( 2000 );
RefreshRates();
}
if (magic > 0 ) Sleep ( 10000 );
return (magic);
} //BUY()//+------------------------------------------------------------------+int SELL( string mySymbol= "" , double lt= 0 , double sl= 0 , double tp= 0 , double mn= 0 ) {
if (mySymbol== "" ) mySymbol= Symbol ();
double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT);
int magic = - 1 ; //продаём по цене Bidint LE= 135 ;
mn= NormalizeDouble (mn,( int )MarketInfo(mySymbol,MODE_DIGITS));
if (lt<MarketInfo(mySymbol, MODE_MINLOT)) return ( 0 );
if (lt>MarketInfo(mySymbol, MODE_MAXLOT)) lt=MarketInfo(mySymbol, MODE_MAXLOT);
if (lt>AccountFreeMargin()* 0.90 /MarketInfo(mySymbol,MODE_MARGINREQUIRED)) lt=AccountFreeMargin()* 0.90 /MarketInfo(mySymbol,MODE_MARGINREQUIRED);
lt = NormalizeDouble (lt, ( int ) MathAbs ( MathLog (MarketInfo(mySymbol, MODE_LOTSTEP))/ MathLog ( 10.0 )));
if (sl> 0 ) {
sl= NormalizeDouble (sl,( int )MarketInfo(mySymbol,MODE_DIGITS));
if (sl-MarketInfo(mySymbol,MODE_ASK)<stoplimit) sl=MarketInfo(mySymbol,MODE_ASK)+stoplimit;
}
if (tp> 0 ) {
tp= NormalizeDouble (tp,( int )MarketInfo(mySymbol,MODE_DIGITS));
if (MarketInfo(mySymbol,MODE_BID)-tp<stoplimit) tp=MarketInfo(mySymbol,MODE_BID)-stoplimit;
}
while (LE> 134 && LE< 139 ) {
magic = OrderSend (mySymbol, OP_SELL, lt, MarketInfo(mySymbol,MODE_BID), SP, sl, tp, WindowExpertName(), ( int )mn, 0 , Red);
LE = GetLastError ();
Sleep ( 2000 );
RefreshRates();
}
if (magic > 0 ) Sleep ( 10000 );
return (magic);
} //SELL()//+------------------------------------------------------------------+
Bu gerçeği kaçırdım. Afedersiniz
Belki düzeltiriz. Zamanlama hakkında bir şey söylemek zor.
Davranışınıza militan cehalet denir.
Lütfen anlamsız gönderiler yapmayı bırakın ve daha fazla forum üyesini rahatsız etmeyin.
Dük. Saat dilimini sordum ve global düzeyde değişkenleri fonksiyonlarla başlatma yeteneğinin iptal edilmesinin gerekli olmadığı kanaatini dile getirdim.
Programlarımın kullanıcılarından biri, test cihazında programı başlatma sorunu olan bir ekran görüntüsü gönderdi
Ne olabilir ve bundan sonra ne yapmalı?
Programlarımın kullanıcılarından biri, test cihazında programı başlatma sorunu olan bir ekran görüntüsü gönderdi
Ne olabilir ve bundan sonra ne yapmalı?
Programlarımın kullanıcılarından biri, test cihazında programı başlatma sorunu olan bir ekran görüntüsü gönderdi
Ne olabilir ve bundan sonra ne yapmalı?
Programlarımın kullanıcılarından biri, test cihazında programı başlatma sorunu olan bir ekran görüntüsü gönderdi
Ne olabilir ve bundan sonra ne yapmalı?
iHigh(....) / iLow(...) işlevlerinin Teklif değerini döndürdüğünden emin olmak istiyorum.
Evet. Grafik, teklif fiyatlarına dayanmaktadır.
Oh iyi:))))
Grafiğe katılırken, 2016.02.11 00:21:02.663 'MoyforNeuro' uzman değil ve yürütülemez diyor, derleyici herhangi bir hata vermiyor, her şey daha önce iyi çalışıyordu, ancak yeni yapıların yayınlanmasından sonra, sorun! Lütfen bana onun nesi olduğunu söyle, işte uzmanın kendisi