[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 999

 
merhaba. EMA dönemini optimize edebilmemiz için danışman koduna ne eklenmesi gerektiğini söyler misiniz?
 
gawrik :
merhaba. EMA dönemini optimize edebilmemiz için danışman koduna ne eklenmesi gerektiğini söyler misiniz?
EMA dönemi tam olarak nedir?
 
deneyim süresi hareketli ortalamalar belki buraya atarım, biri düzeltir mi?
 



#özellik telif hakkı "hasghlhjgg"
#özellik bağlantısı "http://www.efefrWRF.com"

#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 316995

dış dize sNameExpert = "DGJJFYGJD";
harici int nHesap =0;
harici çift dBuyStopLossPoint = 0;
harici çift dSellStopLossPoint = 0;
harici çift dBuyTakeProfitPoint = 0;
harici çift dSellTakeProfitPoint = 0;
harici çift dBuyTrailingStopPoint = 0;
harici çift dSellTrailingStopPoint = 0;
harici çift dLot = 0.03;
harici int nSlippage = 4;
extern bool lFlagUseHourTrade = False;
harici int nFromHourTrade = 0;
harici int nToHourTrade = 23;
extern bool lFlagUseSound = Doğru;
harici dize sSoundFileName = "alert.wav";
dış renk colorOpenBuy = Mavi;
dış renk rengiCloseBuy = Aqua;
dış renk colorOpenSell = Kırmızı;
dış renk rengiKapatSat = Aqua;


geçersiz tanım() {
Yorum("");
}

//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Ticaret zamanı daha gelmedi!");
dönüş(0);
}
}

if(çubuk < 100){
Print("100'den küçük barlar");
dönüş(0);
}

if (nHesap > 0 && nHesap != HesapNumarası()){
Comment("Hesapta işlem :"+HesapNumarası()+" YASAK!");
dönüş(0);
}

if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss daha az " + MIN_STOPLOSS_POINT);
dönüş(0);
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit az " + MIN_TAKEPROFIT_POINT);
dönüş(0);
}

çift diMA0=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA1=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA2=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA3=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA4=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA5=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA6=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA7=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA8=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA9=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA10=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA11=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA12=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA13=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA14=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA15=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA16=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA17=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA18=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA19=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA20=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA21=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA22=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA23=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA24=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA25=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA26=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA27=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA28=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA29=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA30=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA31=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA32=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA33=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA34=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA35=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA36=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA37=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA38=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA39=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA40=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA41=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA42=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA43=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA44=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA45=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA46=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA47=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA48=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA49=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA50=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA51=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA52=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA53=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA54=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA55=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA56=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA57=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA58=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA59=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA60=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA61=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA62=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
çift diMA63=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);


if(AccountFreeMargin() < (1000*dLot)){
Print("Paramız yok. Serbest Marj = " + AccountFreeMargin());
dönüş(0);
}

bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false;

lFlagBuyOpen = (diMA0>diMA1 && diMA2>diMA3 && diMA4>diMA5 && diMA6>diMA7 && diMA8>diMA9 && diMA10>diMA11 && diMA12>diMA13 && diMA14>diMA15 && diMA16>diMA17 && diMA18>diMA17 && diMA18>diMA20 && diMA24>diMA25 && diMA26>diMA27 && diMA28>diMA29);
lFlagSellOpen = (diMA32<diMA33 && diMA34<diMA35 && diMA36<diMA37 && diMA38<diMA39 && diMA40<diMA41 && diMA42<diMA43 && diMA44<diMA45 && diMA46<diMA47 && diMA48<diMA49 &&51 && diMA50<diMA52 && diMA58<diMA59 && diMA60<diMA61);
lFlagBuyClose = (diMA30<diMA31);
lFlagSellClose = (diMA62>diMA63);

if (!ExistPositions()){

if (lFlagBuyOpen){
açık satın();
dönüş(0);
}

if (lFlagSellOpen){
OpenSell();
dönüş(0);
}
}
if (ExistPositions()){
if(OrderType()==OP_BUY){
if (lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy);
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName);
dönüş(0);
}
}
if(OrderType()==OP_SEL){
if (lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell);
if (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName);
dönüş(0);
}
}
}

if (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){

for (int i=0; i<SiparişlerToplam(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = doğru;
if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
sihir=yanlış;

if (OrderSymbol()==Symbol() && lMagic) {
if (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
if (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
if (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
ModifyStopLoss(Bid-dBuyTrailingStopPoint*Puan);
}
}
if (OrderType()==OP_SELL) {
if (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Nokta) {
if (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifyStopLoss(Sor+dSellTrailingStopPoint*Nokta);
}
}
}
}
}
}
dönüş(0);
}

bool ExistPositions() {
for (int i=0; i<SiparişlerToplam(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = doğru;

if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
sihir=yanlış;

if (OrderSymbol()==Symbol() && lMagic) {
dönüş(Doğru);
}
}
}
dönüş(yanlış);
}

void ModifyStopLoss(çift ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE);
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName);
}

geçersiz OpenBuy() {
çift dStopLoss = 0, dTakeProfit = 0;

eğer (dBuyStopLossPoint > 0)
dStopLoss = Teklif-dBuyStopLossPoint*Puan;

if (dBuyTakeProfitPoint > 0)
dTakeProfit = Teklif + dBuyTakeProfitPoint * Puan;

int numorder = OrderSend(Symbol(), OP_BUY, dLots, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);

if (sayı > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}

geçersiz OpenSell() {
çift dStopLoss = 0, dTakeProfit = 0;

if (dSellStopLossPoint > 0)
dStopLoss = Sor+dSellStopLossPoint*Puan;

if (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Puan;

int numorder = OrderSend(Symbol(),OP_SELL, dLots, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);

if (sayı > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}

işte burada. Tüm zaman dilimlerinde hareketli ortalamaların periyotları aynıyken (bu örnekte olduğu gibi) hareketli ortalamaların periyodunu optimize etmenin mümkün olmasını istiyorum. Sadece farklı çiftlerde kullanmak istiyorum, ancak eurobucks için bilenmiş, manuel olarak tekrar al - zihinsel veya fiziksel olarak yapamam

 
burada ve sürgülü olarak açılıp kapanıyor
 
yardım edebilecek var mı?
 

Günaydın !

Fonksiyonun hesaplanmasından iki hesaplanmış parametrenin nasıl türetileceğini söyler misiniz? Doğru anladıysam, return() işlevi parantez içinde belirtilen yalnızca bir parametre döndürür.

 double РасчётТЛвверх( int a, double Цена 1 Син)
        {
           double МА 23 = iMA ( NULL , 0 , 23 , 0 , MODE_EMA , PRICE_CLOSE ,a),
                 
                 MМА 23 [ 17 ];
                 
                 MМА 23 [ 0 ]=МА 23 - 603 * Point ;
                 MМА 23 [ 1 ]=МА 23 - 377 * Point ;
                 MМА 23 [ 2 ]=МА 23 - 233 * Point ;
                 MМА 23 [ 3 ]=МА 23 - 144 * Point ;
                 MМА 23 [ 4 ]=МА 23 - 89 * Point ;
                 MМА 23 [ 5 ]=МА 23 - 55 * Point ;
                 MМА 23 [ 6 ]=МА 23 - 34 * Point ;
                 MМА 23 [ 7 ]=МА 23 - 21 * Point ;
                 MМА 23 [ 8 ]=МА 23 ;
                 MМА 23 [ 9 ]=МА 23 + 21 * Point ;
                 MМА 23 [ 10 ]=МА 23 + 34 * Point ;
                 MМА 23 [ 11 ]=МА 23 + 55 * Point ;
                 MМА 23 [ 12 ]=МА 23 + 89 * Point ;
                 MМА 23 [ 13 ]=МА 23 + 144 * Point ;
                 MМА 23 [ 14 ]=МА 23 + 233 * Point ;
                 MМА 23 [ 15 ]=МА 23 + 377 * Point ;
                 MМА 23 [ 16 ]=МА 23 + 603 * Point ;
  
           for ( int i= 0 ;i<= 16 ;i++)
            {
               if ( NormalizeDouble (Цена 1 Син+ 8 * Point , Digits )<= NormalizeDouble (MМА 23 [i], Digits ))
                {
                   double ТЛвверх=MМА 23 [i+ 5 ];
                   double БезУбMМА 23 вверх = MМА 23 [i+ 4 ];
                   break ;
                    
                      
                }
            }
         
          
                
         return (ТЛвверх);
        }
//--------------------------------------------------------------------

Sadece TLup gösterebiliyorum. Ben de BezUbMMA23up kullanmak istiyorum. Ancak şunu yazarsam - return(TLup, WithoutUbMMA23up) veya return(TLup; WithoutUbMMA23up), o zaman hata veriyor. Fonksiyonun çağrısı - double ТЛup=Hesaplama ТЛup(a,Price1Sin);

Hem TLup hem de BezUbMMA23up kullanmak için nasıl başvurulur? Veya BezUbMMA23up parametresini hesaplamak için yukarıdaki kodu tekrar ayrı ayrı yazmanız ve çıktı dönüşü (WithUbMMA23up) ?

 
örneğin, global bir Değişken yapın ve sonucu oradaki işlevlere ekleyin...
 
Yani yine de hesaplamadan iki sonuç çıkarmanız gerekiyor. Ve ekteki kodda sadece bir tane görüntüleniyor. İki çıkış nasıl yapılır?
 
Hepinize teşekkürler, cevabı burada buldum - https://www.mql5.com/en/articles/1496
Neden: