Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 255

 
Mihail Matkovskij # :

tp nasıl hesaplanır

Double tp=50 değişkeninde belirtelim;

 
Roman Epifanov # :

Double tp=50 değişkeninde belirtelim;

 double takeProfit;
takeProfit = NormalizeDouble (Bid - tp * Point (), Digits ()); // TP для Sell
 
Mihail Matkovskij # :

şimdi yazıyor

2021.12.04 13:56:09.509 TestGenerator: eşleşmeyen veri hatası (2021.12.03 23:45'te yüksek değer 1.13110'a en düşük zaman diliminden ulaşılamıyor, yüksek fiyat 1.13104 uyumsuzlukları)


 //+------------------------------------------------------------------+
//|                                                         repa.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   int i;
   double lot_sum;
   bool trend;
   double ema;
   double sl= 50.0 ,tp= 50.0 ;
   tp = NormalizeDouble (Bid - tp * Point (), Digits ()); // TP для Sell
   double lot= 0.01 ;
   while (i< OrdersTotal ())
   {
   OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
   lot_sum=lot_sum + OrderLots(); // сумма лотов открытых позиций
   
   
   }
   
   ema= iMA ( NULL , 0 , 50 , 0 , MODE_EMA , PRICE_CLOSE , 0 ); //взяли значение средней
   if (Close[ 0 ]<ema)trend= true ; else if (Close[ 0 ]>ema)trend= false ; //определили тренд
   
   if (Close[ 1 ]<Open[ 1 ]) { OrderSend ( Symbol (),OP_SELL,lot,Bid, 2 ,Ask+sl,tp, "Candle sell, Close[0]<MA" );};
   
   
  }
//+------------------------------------------------------------------+
 
Mihail Matkovskij # :

bir dakika için ayarla .. çalışıyor ..

ama durma seviyesi farklıdır -

1 2021.09.16 05:59 satmak 1 0.01 1.18190 51.18192 1.18140 0,00 10000.00


 
Roman Epifanov # :

şimdi yazıyor

2021.12.04 13:56:09.509 TestGenerator: eşleşmeyen veri hatası (2021.12.03 23:45'te yüksek değer 1.13110'a en düşük zaman diliminden ulaşılamıyor, yüksek fiyat 1.13104 uyumsuzlukları)


 void OnTick ()
  {
//---
   int i;
   double lot_sum;
   bool trend;
   double ema;
   double sl= 50.0 ,tp= 50.0 ;
   double stopLoss, takeProfit, openPrice;
   double lot= 0.01 ;
   while (i< OrdersTotal ())
   {
     OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
     lot_sum=lot_sum + OrderLots(); // сумма лотов открытых позиций
   
   }
   
   ema= iMA ( NULL , 0 , 50 , 0 , MODE_EMA , PRICE_CLOSE , 0 ); //взяли значение средней

   if (Close[ 0 ]<ema)
     trend= true ;
   else if (Close[ 0 ]>ema)
     trend= false ; //определили тренд
    
   takeProfit = NormalizeDouble(Bid - tp * Point(), Digits()); // TP для Sell
   stopLoss = NormalizeDouble(Bid + sl * Point(), Digits()); // SL для Sell
   openPrice = NormalizeDouble(Bid, Digits());

   if (Close[ 1 ]<Open[ 1 ]) {
     OrderSend ( Symbol (), OP_SELL, lot, openPrice, 2 , stopLoss , takeProfit , "Candle sell, Close[0]<MA" );
   }
   
  }

Kuralların hepsi çevrimiçi, bu yüzden kendinizi kontrol edin.

 
Mihail Matkovskij # :

Kuralların hepsi çevrimiçi, bu yüzden kendinizi kontrol edin.

Teşekkür ederim!

 

İyi akşamlar beyler lütfen söyleyin bana danışman neden ikinci siparişi açarken hata veriyor?


danışman metni



//+----------------------Parametreler--------------------------- -----------+

girdi int TakeProfit = 100; // Puan olarak kar

giriş int StopLoss = 50; // Puan kaybı

giriş çift Lot = 0.01; // Başlangıç partisi

giriş çift Multilot = 1,95; // Başlangıç lot çarpanı

giriş intSlippage=30; // kayma

giriş int MagicNumber = 333 ; // Benzersiz numara


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

//| uzman başlatma işlevi |

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

çiftp=0;

çift sl=0;

int OnInit()

{

tp=NormalizeDouble(TakeProfit*Point(),Rakamlar());

sl=NormalizeÇift(StopLoss*Point(),Rakamlar());

dönüş(INIT_SUCCESSED);

}


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

//| Uzman onay işlevi |

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

geçersiz OnTick()

{

//--loop, EA etkinleştirildiğinde açık sipariş olup olmadığını kontrol eder ve bunları sayar.

intbuy=0; // SATIN AL emri sayısı

int sat=0; // SATIŞ emirlerinin sayısı


for(int i = OrdersTotal()-1; i>=0; i--)

if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))

if(OrderSymbol()==Symbol())

if(OrderMagicNumber()== MagicNumber)

{

if(OrderType()==OP_BUY)

satın al++;

if(OrderType()==OP_SEL)

satmak++;

}


//--loop, EA etkinleştirildiğinde son kapatılan siparişin verilerini alır

inttype=-1; //Kapalı emir tipi

int history_close_orders=0; //Kapatılan siparişlerin sayısı

çift parti = 0; // Son kapatılan siparişin çoğu

çifte kar =0; //Son siparişin kapatıldığı kâr

tarihsaat=0; //Son siparişin kapanış saati


for(int i = OrdersHistoryTotal()-1; i>=0; i--)

if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY))

if(OrderSymbol()==Symbol())

if(OrderMagicNumber()== MagicNumber)

if(OrderCloseTime()>zaman)

{

history_close_orders++;

time = OrderCloseTime();//son siparişin kapanış zamanı

lot = OrderLots();// Son kapatılan siparişin lotu

type= OrderType();// Son kapatılan siparişin türü

kâr=OrderProfit()*OrderSwap()*OrderCommission();//Kapatılan bir siparişin sonucu

}

// EA'nın çalışacağı partiyi hesaplayın

double Lots_Work=0;// çalışma alanı


if(history_close_orders==0 ||profit>0)// kapanan emir yoksa veya son sipariş artı olarak kapandıysa

Lots_Work=Lot;// iş partisi ilk partiye eşittir


if(history_close_orders>0 && kâr<0) // son sipariş zararla kapandıysa

Lots_Work=1;//çalışma partisi, çarpan ile çarpılan son siparişin partisine eşit olacaktır.


// İlk satın alma siparişinin açılması

if(satın al==0 || kâr>0)

{

int bilet=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0,"Test fuarı Uzman Danışmanı",MagicNumber,0,clrGreen);

if(bilet<0)

Print("OrderSend # ile başarısız oldu",GetLastError());

başka

Print("SiparişGönder işlemi başarıyla tamamlandı");

}


// İkinci ve sonraki satın alma siparişlerini açma

if(satın al==0 && type==OP_SATIN AL && kâr<0)

{

int bilet=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0,"Test fuarı Uzman Danışmanı",MagicNumber,0,clrGreen);

if(bilet<0)

Print("OrderSend # ile başarısız oldu",GetLastError());

başka

Print("SiparişGönder işlemi başarıyla tamamlandı");

}


// İlk satış emrinin açılması

if(sat==0 || kâr>0)

{

int bilet=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0,"Test fuarı Uzman Danışmanı",MagicNumber,0,clrRed);

if(bilet<0)

Print("OrderSend # ile başarısız oldu",GetLastError());

başka

Print("SiparişGönder işlemi başarıyla tamamlandı");

}

// İkinci ve sonraki satın alma siparişlerini açma

if(sell==0 && (tür==OP_SELL && kâr<0))

{

int bilet=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0,"Test fuarı Uzman Danışmanı",MagicNumber,0,clrRed);

if(bilet<0)

Print("OrderSend # ile başarısız oldu",GetLastError());

başka

Print("SiparişGönder işlemi başarıyla tamamlandı");

}


//--Al kar ve zararı durdur ekleyerek siparişi değiştirin

for(int i = OrdersTotal()-1; i>=0; i--)

if(Sipariş Seçimi(i, SELECT_BY_POS))

if(OrderSymbol()==Symbol())

if(OrderMagicNumber()== MagicNumber)

{

if(OrderType()==OP_BUY)

{

if(OrderStopLoss()==0 || OrderTakeProfit()==0)

if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits()),NormalizeDouble(OrderOpenPrice()+tp,Digits()),0,clrGreen))

Print("SiparişModify OK!");

başka

Print("OrderModify SATIN ALMA # ile başarısız oldu", GetLastError());

}

if(OrderType()==OP_SEL)

{

if(OrderStopLoss()==0 || OrderTakeProfit()==0)

if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits()),NormalizeDouble(OrderOpenPrice()-tp,Digits()),0,clrRed))

Print("SiparişModify OK!");

başka

Print("OrderModify SATIŞ # ile başarısız oldu", GetLastError());

}

}


}

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


 
i3 işlemcili eski bir dizüstü bilgisayarda, MT5 tarafından desteklenmeyen WinXP 32 bit hala kuruluydu. Geçenlerde belleği 6 GB'a yükselttim, MT4 ve MT5'in çalışacağı 64 bit işletim sistemi kurmak istiyorum. Hangisi daha çok tercih edilir - Win7 veya Win8.1?
 
atztek # :
i3 işlemcili eski bir dizüstü bilgisayarda, MT5 tarafından desteklenmeyen WinXP 32 bit hala kuruluydu. Geçenlerde belleği 6 GB'a yükselttim, MT4 ve MT5'in çalışacağı 64 bit işletim sistemi kurmak istiyorum. Hangisi daha çok tercih edilir - Win7 veya Win8.1?

on

 
Andrey Sokolov # :

on

Bu sürüm, sürekli güncellemelerden bıkmış yeni bir dizüstü bilgisayara yüklenir. Ayrıca, insanlar eski dizüstü bilgisayarlarda sekizin ondan daha iyi çalıştığını yazıyor. WinXP'yi eskisinde bırakırdım, ancak üzerinde MT5 çalışmıyor ve XP'nin görmediği 3 GB bellek zaten yeterli değil. Yine de seçim 7 ile 8.1 arasındaysa, MT4/5'te optimizasyon yapmak için hangisi daha iyi?
Neden: