Şu anda danışmanla garip bir şey oluyor. pozisyonların taahhütlü kapanışı çalışmıyor. Aynı türden birkaç pozisyon açık olabilir ve aynı anda çalışabilir. Ve sonuç: değiştirilmiş bir versiyonda olsa da her şey aynı problem üzerinde birleşiyor!!??
Düzeltildi, deneyin.
externdoubleLots = 0.1;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intstart(){doubleP_up0,P_down0,P_up1,P_down1;
doublest_m1, st_s1, st_m2, st_s2,Pivot,ma_s1;
inti, cnt, ticket, total;
boolflag=true;
if(Bars<100){Print("bars less than 100");
return(0);
}// Проверяем стоит ли открыватьсяcnt=OrdersHistoryTotal()-1;
for(i=cnt;i>=0;i--){if(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))continue;
if(OrderOpenTime()>=Time[0]){// Time[0] - если позиция открывается на нулевом баре текущего символаflag=false;
break;
}}cnt=OrdersTotal()-1;
for(i=cnt;i>=0;i--){if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
if(OrderOpenTime()>=Time[0]){// Time[0] - если позиция открывается на нулевом баре текущего символаflag=false;
break;
}}//-----------------------------------------------P_up0=iCustom(0,0,"Ценовой канал",11,0,0);
P_down0=iCustom(0,0,"Ценовой канал",11,1,0);
P_up1=iCustom(0,0,"Ценовой канал",11,0,1);
P_down1=iCustom(0,0,"Ценовой канал",11,1,1);
st_m1=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_MAIN,1);
st_s1=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,1);
st_m2=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_MAIN,2);
st_s2=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,2);
Pivot=iCustom(0,0,"Pivot",0,1);
ma_s1=iMA(0,0,4,0,MODE_SMA,PRICE_CLOSE,1);
//задали все данные // Проверка свободной маржиif(AccountFreeMargin()<(1000*Lots)){Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}total=OrdersTotal();
// Условие открытие позиции BUYif(st_m2>st_s2&&st_m1>st_s1&&st_m2<25&&Pivot<ma_s1){if((total>0) || (!flag))return(0);
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Green);
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Alert("Покупка: ",OrderOpenPrice());
}elseAlert("ошибка:по цене ",OrderOpenPrice());
return(0);
}// Условие открытие позиции SELLif(st_m2<st_s2&&st_m1<st_s1&&st_m2>75&&Pivot>ma_s1){if((total>0) || (!flag))return(0);
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red);
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Alert("Покупка: ",OrderOpenPrice());
}elseAlert("ошибка:по цене ",OrderOpenPrice());
return(0);
}for(i=cnt;i>=0;i--){OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()){if(OrderType()==OP_BUY){// длинная позиция открыта// условие закрытие длинной позицииif(P_down1>P_down0){OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}}else{// условие закрытия короткой позицииif(P_up1<P_up0){OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}}}}return(0);
}
4 yerine test ederken, iki boyutlu bir dizide aynı şey olan 0 alıyorum, ne yapmalıyım?
Ve bu fırsatı değerlendirerek ikinci soruyu soracağım: anladığım kadarıyla, mql4'te bir değişkene rastgele sayılar atamak için belirli bir aralık belirlemek imkansız mı?
Burada bir kod buldum.
Bunu Uzman Danışmanıma nasıl ekleyebilirim????????????
Şu anda danışmanla garip bir şey oluyor. pozisyonların taahhütlü kapanışı çalışmıyor. Aynı türden birkaç pozisyon açık olabilir ve aynı anda çalışabilir. Ve sonuç: değiştirilmiş bir versiyonda olsa da her şey aynı problem üzerinde birleşiyor!!??
Düzeltildi, deneyin.
Merhaba.
Bir sinir ağını programlarken aşağıdaki sorunla karşılaştım.
Bir dizi var:
4 yerine test ederken, iki boyutlu bir dizide aynı şey olan 0 alıyorum, ne yapmalıyım?
Ve bu fırsatı değerlendirerek ikinci soruyu soracağım: anladığım kadarıyla, mql4'te bir değişkene rastgele sayılar atamak için belirli bir aralık belirlemek imkansız mı?
Delphi'de böyle görünüyor
rastgele;
i:=Rastgele(10); // 0 ile 10 arasında aynı aralık
..Bir dizi var:
4 yerine test ederken, iki boyutlu bir dizide aynı şey olan 0 alıyorum, ne yapmalıyım?
Bir dizi ile her şey basittir, [3] boyutunu tanımladınız ve dördüncü, eksik hücreyi çağırdınız.
doubleX[4] yazın; ve her şey işe yarayacak.
Bir dizi ile her şey basittir, [3] boyutunu tanımladınız ve dördüncü, eksik hücreyi çağırdınız.
doubleX[4] yazın; ve her şey işe yarayacak.
Teşekkürler, deneyeceğim, peki ya rastgele?
Ve eğer iki boyutlu bir dizi, 4'e 9'luk bir matris varsa ve her elemana 0,1 değeri atanırsa , bunun gibi bir şey mi olacak?
Ve eğer iki boyutlu bir dizi, 4'e 9'luk bir matris varsa ve her elemana 0,1 değeri atanırsa, bunun gibi bir şey mi olacak?
Çalışmalı. Çok tembel değilseniz ve yorumlarda tüm matrisi satır satır görüntülerseniz, sonucu net bir şekilde göreceksiniz.
Bu arada, bir yorumu bir fonksiyon haline getirebilir ve dizinin içeriğini kontrol etmek için kullanabilirsiniz.
Ve rastgele ev hakkında - geçiş. Sadece geçiyordum ve hatayı gördüm. :))
Teşekkürler, deneyeceğim, peki ya rastgele?
Ve eğer iki boyutlu bir dizi, 4'e 9'luk bir matris varsa ve her elemana 0,1 değeri atanırsa, bunun gibi bir şey mi olacak?
Kullanılabilir
Ve eğer iki boyutlu bir dizi, 4'e 9'luk bir matris varsa ve her elemana 0,1 değeri atanırsa, bunun gibi bir şey mi olacak?
İşe yarayacak, ancak şöyle yazmak daha iyi: