Mq4 dilini yazmayi ogrenelim

Collapse
This topic is closed.
X
X
 
  • Saat
  • Show
Clear All
new posts
  • teo
    Demirbaş
    • 03 Mart 2009
    • 3712

    #76
    geleleım for olayına, bu donguyude ogrendıkten sonra artık , ornekler yapabılırız..

    For dongusu vemıs oldugumuz aralıga kadar ıslem yapar,

    Mesela 1 den 10 kadar yap dersek bu sekılde ıslem yapar.


    Kullanım seklı
    ////////////////////////

    for ( sartlarımız)


    {


    }


    kurallar sekılındedır

    Yorum

    • teo
      Demirbaş
      • 03 Mart 2009
      • 3712

      #77
      ıkı tane ozel komutumuz vardır,

      bırısı

      break;


      dıgerı
      continue;


      bu komtlarda dongulerımızde bazen ıstedıgımız sonuc buldugumuz zaman donguye durdurmak, veya bulana kadar devametmesını ısterız, bu komutla bu ıse yarar orneklerle yaparsak, daha ıyı anlarız..

      Yorum

      • teo
        Demirbaş
        • 03 Mart 2009
        • 3712

        #78
        Sımdı bır ornek yapalım, kıtaptan aynen alacagım, guzel ornek cunku


        Problem su, bunu programlayacagız

        Cıftlıgımızde 1000 tane koyun var, Ve hergun koyunlarımız % 1 artıyor.
        Cıftlıgımızde koyun sayısı ayın sonunda 50.000 'ı gecerse, Bunun % 10 'nu dıger cıftlıge aktarıyoruz.

        Ne kadar zamanda koyun aktardıgımız cıftlıkte koyun sayısı 35.000 olur...

        Yorum

        • teo
          Demirbaş
          • 03 Mart 2009
          • 3712

          #79
          int start()
          {
          //--------------------------------------------------------------------
          int
          gun, // mevcut gunumuz
          ay; // ay sayimiz
          double
          ciftlika =1000.0,
          gunlukoran =1,
          ciftlikamaxkoyun=50000.0,
          transferoran =10,
          amacrakam =35000.0,
          ciftlikb;
          //--------------------------------------------------------------------
          while(ciftlikb < amacrakam) //2 cıftlıkte 35000 olana kadar yap
          {
          //--------------------------------------------------------------
          for(gun=1; gun<=30; gun++) // 1.gunden 30.gune kadar 1 artırarak yap
          ciftlika=ciftlika*(1+gunlukoran/100);
          //--------------------------------------------------------------
          ay++;
          if (ciftlika< ciftlikamaxkoyun)
          continue; // ulasana kadar donguye devam et, ulastıgı an alttakı satıra gec demektır
          ciftlikb=ciftlikb+ciftlika*transferoran/100;
          ciftlika=ciftlika*(1-transferoran/100);
          }
          //--------------------------------------------------------------------
          Alert("Amacimiza ",ay," da ulastik.");
          return;
          }
          //--------------------------------------------------------------------

          Yorum

          • teo
            Demirbaş
            • 03 Mart 2009
            • 3712

            #80
            BU haftalık bu kadar, sormak ıstedıklerınzı sorun, ben veya SAyın Gungor yardımcı olmaya calsıırız,

            Bu arada eger ılgılenen arkadaslar ornek calısma gonderırse memmun olurum,

            En azından cabalarımız bosa degıl derız..

            heheh

            Yorum

            • mozkan
              Aktif
              • 28 Mart 2009
              • 125

              #81
              bgungor68 Nickli Üyeden Alıntı Mesajı göster
              HHV(H - 2.5*ATR(5),10);
              LLV(L + 2.5*ATR(5),10);
              sn. bgüngör yukarıdaki formüller bir nevi chandlier exit türevi malum. Sizden ricam bu iki formülü fiyat grafiği üzerinde gösterecek bir indicatorü topiğe eklemenizdir. diyeceksiniz ki efenim bunlar bazı forumlarda zaten yayınlanmış halde chandlier exit olarak. doğrudur fakat o indicatörlerin içine girdiğimiz zaman abidik gubidik parasal risk, close koşulu, shift koşulu vs. gibi bir sürü saçmalık eklenmiş durumda. Ben close a hiç bakmam trade esnasında, stop için ise ya high ı yada lowu kullanırım. o nedenle yukarıdaki iki formülü fiyat ekranında aynı anda gösterecek bir formülasyonu mq4 formatında paylaşırsanız pek bir makbule geçecektir. saygılarımla.
              There are known knowns, unknown knowns, known unknowns, and
              most importantly unknown unknowns.
              Trader Vic

              Yorum

              • bgungor68
                ....................
                • 06 Aralık 2007
                • 809

                #82
                sn.mozkan, bu indikator chandlierExit kanalını gosterir. Metatrader da grafik üzerinde görüntü veriri.. isterseniz periytları manuel değiştireblirsiniz..
                Eklenen Dosyalar

                Yorum

                • mozkan
                  Aktif
                  • 28 Mart 2009
                  • 125

                  #83
                  bgungor68 Nickli Üyeden Alıntı Mesajı göster
                  sn.mozkan, bu indikator chandlierExit kanalını gosterir. Metatrader da grafik üzerinde görüntü veriri.. isterseniz periytları manuel değiştireblirsiniz..
                  sn. bgungor68, ilginize teşekkürler, formülasyonu aldığınız sitenin sahibi ile emaille görüşmüşlüğümüz vardır, şunu söyleyebilirim kendisi bir hırsızdır, sisteminizi kodlarım ayağı ile beleş sistem toplayıp allayıp pullayıp satar, benden demesi
                  There are known knowns, unknown knowns, known unknowns, and
                  most importantly unknown unknowns.
                  Trader Vic

                  Yorum

                  • teo
                    Demirbaş
                    • 03 Mart 2009
                    • 3712

                    #84
                    Bazı durumlarda tek tek ıf sormak epey vaktımızı alır.

                    Bunu kolaylastıran bır komut vardır

                    Bu komut

                    Switch (olay)

                    {

                    case x:

                    case y:

                    }

                    seklındedır

                    mesela

                    1 ıse sunu yap 2 ıse sunu yap 3 ıse bunu yap demek yerıne aynı paramatreyı sartlara gore sorguluyorsak bunu kullanmak uygundur

                    Ornekle daha ıyı anlayacaksınız

                    Yorum

                    • teo
                      Demirbaş
                      • 03 Mart 2009
                      • 3712

                      #85
                      Ornek

                      1 den 10 'a kadar barları sıralaylaım ve alarm verelım


                      int start()

                      {
                      int n = 1;

                      Alert("Bar sayılarını ", n,"/n'den sonra saymaya basladık:");
                      switch (n)

                      {

                      case 1 : Alert("Bar 1"); // eger n=1 ıse demek...
                      case 2 : Alert("Bar 2");
                      case 3 : Alert("Bar 3");
                      case 4 : Alert("Bar 4");
                      case 5 : Alert("Bar 5");
                      case 6 : Alert("Bar 6");
                      case 7 : Alert("Bar 7");
                      case 8 : Alert("Bar 8");

                      case 9 : Alert("Bar 9");

                      case 10: Alert("Bar 10");break; // burda artık bırak dıyoruz

                      default: Alert("Yanlıs sayı gırıldı");
                      }

                      return;
                      }

                      Yorum

                      • teo
                        Demirbaş
                        • 03 Mart 2009
                        • 3712

                        #86
                        sımdı bunu ıf ıle de yapabılırdık ama bu sekılde daha dogru ve anlasılır

                        Yorum

                        • teo
                          Demirbaş
                          • 03 Mart 2009
                          • 3712

                          #87
                          Bu ornekte break hepsını kontrol ettıkten sonra devreye gırıyor, sız eger bu donguyu bellı bır yerde bıtırımek ıstıyorsanız break olayını o satıra yazmalısınız.


                          Mumkun oldugu kadar anlasılır yazmaya calsııyorum ama bu konuyu hıc bılmeyenler ıcın karısık olabılır,


                          Endıselenmeyın, ılerde cok ornek gordukce olay netlesır

                          Yorum

                          • ardasu
                            Aktif
                            • 27 Mart 2009
                            • 90

                            #88
                            sn.teo aşağıda tob la ilgili bir robot yaptım.metaeditörde hata vermiyor, ama
                            tester sonucu boş çıkıyor.Hata ne olabilir?

                            Yorum

                            • ardasu
                              Aktif
                              • 27 Mart 2009
                              • 90

                              #89
                              //+------------------------------------------------------------------+
                              //| oraks |
                              //| ardasuay |
                              //| ardasua@hotmail.com|
                              //+------------------------------------------------------------------+

                              extern double TakeProfit = 50;
                              extern double Lots = 0.1;
                              extern double TrailingStop = 30;
                              extern double stoploss=30;
                              //+------------------------------------------------------------------+
                              //| |
                              //+------------------------------------------------------------------+
                              int start()
                              {

                              int cnt, ticket, total;
                              double yesterday_close,yesterday_high,yesterday_low;
                              double today_open,today_high,today_low,today_close;
                              double tob1;
                              double current_price;
                              // on a chart of less than 100 bars
                              if(Bars<100)
                              {
                              Print("bars less than 100");
                              return(0);
                              }
                              if(TakeProfit<10)
                              {
                              Print("TakeProfit less than 10");
                              return(0); // check TakeProfit
                              }
                              // to simplify the coding and speed up access
                              // data are put into internal variables
                              //+------------------------------------------------------------------+


                              tob1=(( today_high-today_open+today_close-today_low) / (2*(today_high-today_low)));



                              //+------------------------------------------------------------------+

                              total=OrdersTotal();
                              if(total<1)
                              {
                              // no opened orders identified
                              if(AccountFreeMargin()<(1000*Lots))
                              {
                              Print("We have no money. Free Margin = ", AccountFreeMargin());
                              return(0);
                              }
                              // check for long position (BUY) possibility
                              if(tob1<10 )

                              ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point,16384,0,Green);
                              if(ticket>0)
                              {
                              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("BUY order opened : ",OrderOpenPrice());
                              }
                              else Print("Error opening BUY order : ",GetLastError());
                              return(0);
                              }
                              // check for short position (SELL) possibility
                              if(tob1>90 )

                              ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,16384,0,Red);
                              if(ticket>0)
                              {
                              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("SELL order opened : ",OrderOpenPrice());
                              }
                              else Print("Error opening SELL order : ",GetLastError());
                              return(0);

                              // it is important to enter the market correctly,
                              // but it is more important to exit it correctly...
                              for(cnt=0;cnt<total;cnt++)
                              {
                              OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
                              if(OrderType()<=OP_SELL && // check for opened position
                              OrderSymbol()==Symbol()) // check for symbol
                              {
                              if(OrderType()==OP_BUY) // long position is opened
                              {
                              // should it be closed?

                              {
                              OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position
                              return(0); // exit
                              }
                              // check for trailing stop
                              if(TrailingStop>0)
                              {
                              if(Bid-OrderOpenPrice()>Point*TrailingStop)
                              {
                              if(OrderStopLoss()<Bid-Point*TrailingStop)
                              {
                              OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                              return(0);
                              }
                              }
                              }
                              }
                              else // go to short position
                              {
                              // should it be closed?

                              OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position
                              return(0); // exit
                              }
                              // check for trailing stop
                              if(TrailingStop>0)
                              {
                              if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                              {
                              if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                              {
                              OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);
                              return(0);
                              }
                              }
                              }
                              }
                              }
                              }

                              // the end.

                              Yorum

                              • teo
                                Demirbaş
                                • 03 Mart 2009
                                • 3712

                                #90
                                Tob 10 ve 90 yerıne 0.10 ve 0.90 olacak

                                ama tob da ea olmuyor ea kurunca degerler eksı cıkıyor,

                                bunu bırde bu sekılde deneyın..

                                bunun ea sını buraya yapıstırın da bır de ben deneyeyeım, bakalım nerede hata verıyor...

                                Yorum

                                Working...
                                X

                                Debug Information