Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 389

 

Hepinize iyi günler.

Çok uzun zaman önce MQL5 için programlama öğrenmeye başladım, belgelerle tanıştım ve YouTube'da bazı web seminerleri izledim. Birkaç mütevazı adım atmayı başardım :) ama şimdi üçüncü gündür oturduğum bir zorluk var :(

Genel konsept, önce Ask ve Bid fiyatlarını alıyoruz (bunun için MqlTick ve SymbolInfoTick kullandım), sonra açık anlaşma olup olmadığına bakıyoruz (bunun için PositionsTotal kullandım ), eğer açık pozisyon yoksa, o zaman bazı koşullara bağlı olarak Ack veya Bid fiyatlarında bir pozisyon açıyoruz. Yani, ondan önce alım için son anlaşma yapıldıysa ve olumlu çıktıysa (düşük aldık ve yüksek kapattık), o zaman alım için yeni bir pozisyon açacağız ... Bu genel anlamda :) sorun şu ki, hangisinde bir tür aşırı anlaşma olduğu ve buna bağlı olarak hangi fiyattan açılıp, ne kapandığı hakkında bilgi alamıyorum...

İşte hacklemeyi başardığım kod:

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

//|                                                  SOVETNIK_01.mq5 |

//|                                                   Tokarev Sergey |

//|                                             https://www.mql5.com |

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

#property copyright "Tokarev Sergey"

#property link        "https://www.mql5.com"

#property version    "1.00"



//Мои подключаемые библиотеки

#include<Trade\Trade.mqh>           //Библиотека для структуры "CTrade", она отвечает за выполнение всех торговых операций

#include <Trade\PositionInfo.mqh>   //Библиотека для структуры "CPositionInfo" она выдаёт информацию по всем нашим позициям



//переменные для подключаемых классов и структур опишем тут

CTrade Trade;                 //Значение структуры "CTrade" поместим в переменную Trade

CPositionInfo PositionInfo;   //Значение структуры "CPositionInfo" поместим в переменную PositionInfo

MqlTick last_tick;             //В переменной last_tick будут храниться цены последнего пришедшего тика, для этого используем структуру "MqlTick"

MqlTradeRequest request;

MqlTradeResult result;

//глобальные переменные

double SL;                           //Переменная необходимая для преобразования размера StopLoss в зависимости от типа брокера

double TP;                           //Переменная необходимая для преобразования размера TakeProfit в зависимости от типа брокера

double Ask;                           //Переменная в которой будем хранить значения цены спроса

double Bid;                           //Переменная в которой будем хранить значение цены предложения

int MagicNumber= 123456 ;     //Зададим MagicNumber для идентификации своих ордеров

int N;                     //В переменную N мы занесём кол-во открытых позиций                  

int Lot;                     //Укажем размер нашего лота

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

//| Инструкции которые срабатывают один раз при запуске эксперта                                   |

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

int OnInit ()

  {

   Trade.SetExpertMagicNumber(MagicNumber);         //Занесём наш номер в переменную Trade

   Lot= 1 ;                                                   //Установим размер нашего лота

   return ( 0 );

  }

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

//| Инструкции которые срабатывают один раз при остановке (закрытии) эксперта                                 |

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

void OnDeinit ( const int reason)

  {

  }

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

//| Инструкции которые срабатывают при каждом новом тике цен                                             |

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

void OnTick ()

  {

   SymbolInfoTick ( _Symbol ,last_tick);   //Заполняем переменную last_tick последними ценами текущего символа, для этого используем "SymbolInfoTick"

   //Обновляем переменные Ask и Bid для дальнейшего использования

   Ask=last_tick.ask;

   Bid=last_tick.bid;

   Print ( "Цена ПРОДАЖИ = " ,Ask);

   Print ( "Цена ПОКУПКИ = " ,Bid);

//Определим существует ли открытая позиция или нет

   N= PositionsTotal ();

   Print ( "Кол-во открытых позиций: " ,N); 

   if (N== 0 )

      {

       //Если позиции нет то определим какая сделка была крайней

       HistorySelect ( 0 , TimeCurrent ());         //Загружаем историю наших сделок

       ulong last_deal_ticket;                   //Объявим переменную для тикета последней сделки

       ulong deals= HistoryOrdersTotal ();       //Обяъвим переменную "deals" куда выгрузим количество наших сделок в целом из истории

      last_deal_ticket= HistoryDealGetTicket (( int )deals- 1 ); //получим тикет крайней сделки

       Print ( "Ticket крайней сделки: " ,last_deal_ticket);

       long deal_type= HistoryDealGetInteger (last_deal_ticket, DEAL_TYPE ); //Тут получить должны тип крайней сделки из истории

       Print ( "Тип крайней " ,deal_type);      

       //Если была на продажу то покупаем

       if (deal_type==BUY)

         {

         //Открываем наш ордер на покупку

         Trade.Buy(Lot, Symbol (),Ask,SL,TP);

         Print ( "Мы купили по цене: " ,Ask);

} 

 

Tüm yardımlar için şimdiden çok teşekkürler :)

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Karputov Vladimir :
Uzun zamandır basılı kitaplardan ve elektronik biçimde korsanlardan uzaklaştım. Eskiden.

güzel yaşamayı yasaklayamazsın.

yeni gelenler bana ne okuyacağımı soruyorlar ama kitaplardan ne olduğunu hatırlamıyorum

 

Hepinize iyi günler!

Danışman penceresindeki giriş alanından, açılır listeden kullanıcı tarafından seçilen zaman dilimini almanız gerekir. Bir fonksiyona nasıl eklenir, arka arkaya ikinci gün acı çekiyorum, söyle bana lütfen))!

kod:

giriş enum timeFrame {
Saat_1 = 60,
Saat_4 = 240,
Gün_1 = 1440
Hafta_1 = 10080

};


iADX(currencySelect, SEÇİLEN VERİLERİ BURAYA GİRİN!, ADXparam, PRICE_CLOSE , MODE_MINUSDI,2)


teşekkür etmek!

 
Сергей Михеев :

Kodu foruma doğru şekilde yapıştırın

Enum'unuzu kullanan örnek bir komut dosyası:

 //+------------------------------------------------------------------+
//|                                                       Primer.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum timeFrame
  {
   Hour_1 = 60 ,
   Hour_4 = 240 ,
   Day_1= 1440 ,
   Week_1= 10080
  };
input timeFrame MyTimeFrame=Hour_1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   Print (MyTimeFrame);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir :

Kodu foruma doğru şekilde yapıştırın

Enum'unuzu kullanan örnek bir komut dosyası:

Teşekkür ederim!

Yine de lütfen söyleyin bana, MQ4'te metin anahtarlı bir ilişkisel dizi gibi bir yapı var mı, örneğin: Dizi["İşte anahtar!"]?

 
Сергей Михеев :

Teşekkür ederim!

Yine de lütfen söyleyin bana, MQ4'te metin anahtarlı bir ilişkisel dizi gibi bir yapı var mı, örneğin: Dizi["İşte anahtar!"]?

 //+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
#define Number                 1
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ()
  {
   int Arr[]={ 12 , 15 , 4 };
   Print (Arr[Number]);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir :
Örneğinizde, anahtarlar sayılardır ve ben anahtar olarak dizeleri kullanmayı kastetmiştim.
 
Сергей Михеев :
Örneğinizde, anahtarlar sayılardır ve ben anahtar olarak dizeleri kullanmayı kastetmiştim.
Dizi elemanlarına indeks ile erişilir. İndeks bir tamsayı tipidir int.
 

Merhaba!

MQL EA kodunda (hangi fiyattan açıldı, TP ve SL neydi) açık ve zaten kapalı olan anlaşmalar hakkında nasıl bilgi alabileceğimi söyler misiniz? en az 1 son.

Ve hareketli ortalamanın son n değerleriyle (daha iyi ağırlıklı veya üstel) bir dizi döndürecek yerleşik bir işlev veya kitaplık var mı?

 
Alex317 :

Merhaba!

MQL EA kodunda (hangi fiyattan açıldı, TP ve SL neydi) açık ve zaten kapalı olan anlaşmalar hakkında nasıl bilgi alabileceğimi söyler misiniz? en az 1 son.

Ve hareketli ortalamanın son n değerleriyle (daha iyi ağırlıklı veya üstel) bir dizi döndürecek yerleşik bir işlev veya kitaplık var mı?

Lütfen sorunuzun hangi MQL4 veya MQL5 sürümü için olduğunu her zaman belirtin.
Neden: