Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
tamam eğer kullanırsan
double stop;
stop=stoploss* Point ();
Print ( DoubleToString (stoploss));
Point() işlevini kullanarak, bu size stoploss değerinizi verecektir ve ardından stopunuzun fiyat seviyesini size vermek için sırasıyla Bid ve Ask değerlerine eklemeniz veya çıkarmanız gerekir.
Aynı şey kâr elde etmek için de geçerlidir, ancak elbette tersi de geçerlidir.
Bazı EA'ları kod bazında kontrol edebilirsiniz, kodlayıcıların bunları EA'larında nasıl yaptıklarına dair birçok örnek ve varyasyon vardır.
Örneğin, İzleyen Master https://www.mql5.com/en/code/16136 adında biri burada
// 1. Main function
//-------------------------------------------------------------------------
void OnTick ( void )
{
Comment ( "Copyright © 2016, Il Anokhin\n" + TimeToStr ( TimeCurrent (), TIME_DATE | TIME_SECONDS ));
//--- 1.1. Define pip -----------------------------------------------------
if ( Digits == 4 || Digits <= 2 ) pip= Point ;
if ( Digits == 5 || Digits == 3 ) pip= Point * 10 ;
//--- 1.2. Trailing -------------------------------------------------------
for (i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true )
{
if ( OrderSymbol ()== Symbol () && TS> 0 && OrderProfit ()> 0 )
{
if (UC== true && OrderComment ()==Comm && UM== true && OrderMagicNumber ()==Magic && OrderType ()== OP_BUY && OrderOpenPrice ()+TS*pip<= Bid && OrderStopLoss ()< Bid -TS*pip) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TS*pip, OrderTakeProfit (), 0 );
if (UC== true && OrderComment ()==Comm && UM== true && OrderMagicNumber ()==Magic && OrderType ()== OP_SELL && OrderOpenPrice ()-TS*pip>= Ask && ( OrderStopLoss ()> Ask +TS*pip || OrderStopLoss ()== 0 )) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TS*pip, OrderTakeProfit (), 0 );
if (UC== true && OrderComment ()==Comm && UM== false && OrderType ()== OP_BUY && OrderOpenPrice ()+TS*pip<= Bid && OrderStopLoss ()< Bid -TS*pip) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TS*pip, OrderTakeProfit (), 0 );
if (UC== true && OrderComment ()==Comm && UM== false && OrderType ()== OP_SELL && OrderOpenPrice ()-TS*pip>= Ask && ( OrderStopLoss ()> Ask +TS*pip || OrderStopLoss ()== 0 )) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TS*pip, OrderTakeProfit (), 0 );
if (UC== false && UM== true && OrderMagicNumber ()==Magic && OrderType ()== OP_BUY && OrderOpenPrice ()+TS*pip<= Bid && OrderStopLoss ()< Bid -TS*pip) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TS*pip, OrderTakeProfit (), 0 );
if (UC== false && UM== true && OrderMagicNumber ()==Magic && OrderType ()== OP_SELL && OrderOpenPrice ()-TS*pip>= Ask && ( OrderStopLoss ()> Ask +TS*pip || OrderStopLoss ()== 0 )) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TS*pip, OrderTakeProfit (), 0 );
if (UC== false && UM== false && OrderType ()== OP_BUY && OrderOpenPrice ()+TS*pip<= Bid && OrderStopLoss ()< Bid -TS*pip) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -TS*pip, OrderTakeProfit (), 0 );
if (UC== false && UM== false && OrderType ()== OP_SELL && OrderOpenPrice ()-TS*pip>= Ask && ( OrderStopLoss ()> Ask +TS*pip || OrderStopLoss ()== 0 )) w= OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +TS*pip, OrderTakeProfit (), 0 );
}
}
}
//--- 1.3. End of main function -------------------------------------------
Kodlayıcıyı görebileceğiniz yerde Il Anokhin yumruk pip'i tanımlar.
Ancak burada, Дима https://www.mql5.com/en/code/8674 adresinden E-smart takip eden başka bir örnek var.
//+------------------------------------------------------------------+
void ModifyStopLossInPoint( int stoploss)
{
bool result;
double sl = 0 ;
double point = MarketInfo ( OrderSymbol (), MODE_POINT );
if ( OrderType () == OP_BUY ) sl = OrderOpenPrice () + stoploss * point;
if ( OrderType () == OP_SELL ) sl = OrderOpenPrice () - stoploss * point;
result = OrderModify ( OrderTicket (), OrderOpenPrice (),sl, OrderTakeProfit (), 0 ,CLR_NONE);
if (result && UseSound) PlaySound (var_132);
}
//+------------------------------------------------------------------+
Bir şeyleri yaparkenki ince farklılıklara dikkat edin.
En iyi sonucu bulana kadar her zaman çeşitli şeyler denerim.
Tamam, eğer kullanırsan...
Omg, bir şeyler okumaya ve denemeye başlamadan önce her şey için harika teşekkürler. Bunu yakında deneyeceğim.
Bir kez daha çok teşekkürler @Marco vd Heijden
Nesneler birbirinin üzerine yığılmıştır, bu nedenle chartevent ()'in hangi düğme veya nesnelere hangi tıklamaların çakışabilecek diğer nesnelere göre en yüksek önceliğe sahip olduğunu bilmesi önemlidir.
Çok teşekkürler dostum, yorumlarını beğendim hangisi daha açıklayıcı ve faydalı .
Senin için her şeyin en iyisini dilerim.
tamam eğer kullanırsan
En iyi sonucu bulana kadar her zaman çeşitli şeyler denerim.
Sadece iyi yorumunuzu anlamaya çalışıyorum ve ardından Emirlerim, Zararı Durdur ve Kâr Al işlevlerim için bazı iyi kodlar yazıyorum - bunun için teşekkürler.
Bu yüzden, aşağıdaki koda benzer bir şey denedim ve 10 pip için hem EURUSD hem de FB Stop Loss Value'nun doğru olduğundan emin olmam gerekiyor ? (ne düşündüğümü bilmek istiyorsanız - günlüklerin/sonuçların altındaki evet'in her ikisi de 10 pip için doğru değerdir.)
Örneğin: stoploss değeri = 10; Pozisyon - SATIN AL
kayıt: EURUSD | fiyat (sat): 1.05 6 33 / Zarar Durdur: 1.05 5 33
kayıt: Facebook | fiyat (satış): 119,6 9 / Zarar Durdur: 119,5 9
( Aşağıdaki işlevi void OnChartevent() ile çağırıyorum)
//---
if ( sparam == _buy_name_btn )
{
ObjectSetInteger ( 0 , sparam, OBJPROP_STATE , false );
_Buy_calc_SL_TP();
Print ( " | Click Verify / " );
}
//---
return ;
{
//---
if ( _StopLoss_ON == true )
{
//_Sl = OrderOpenPrice() - _StopLoss * _Pip;
_Sl = Ask - _StopLoss * _Pip;
Print ( " | Buy Calc SL TP Function / StopLoss: " , _Sl );
}
//---
return ;
}
Çalışıyor gibi görünüyor.
Bay William'ın yorumunu EA'nın kod başkanına dahil etmeye çalışacağım - bir kez daha teşekkürler William. Büyük Pip'in Hesaplaması MQL4
(lütfen beni suçlamayın çünkü bu kod endüstrisi benim için çok yaygın görünüyor ve bazen aklımı kaybediyorum - neyse umarım Trade Panel EA kodlarını yakında bitiririm)
Ve bitirdikten sonra test EA'mın kodunu paylaşacağım, çünkü bu kod iyi / doğru mu yoksa ne? (çünkü profesyonel kodlayıcı/programcı değilim - üzerinde çalışıyorum -)
Keith Watford :
Tamam, yeterince adil. Bazı yazılarınızı okuyamıyorum çünkü gözlerim ağrıyor.
Başkaları da aynı şeyi hissediyorsa, o zaman sen kaçırırsın, ben değil.
Piyasa kapalı ve başka bir şeyden emin değilim. Ama aşağıdaki kod gibi bir şey denedim, bir şeyi kaçırdığımı hissediyorum ama bulamıyorum.
( Ticaret Panel EA'mın Open Buy ve Open Sell pozisyonları için kodları olduğunu belirtmek isterim, ancak elimle yazmaya çalışıyorum, bu EA'nın nasıl çalıştığından eminim)
Yardımlarınız ve tavsiyeleriniz için şimdiden teşekkürler.
#define POINT int ///< `CHANGE / _Point`.
#define PIP double ///< `POINT / PipsPerPOINT`.
CHANGE points_to_change(POINT n){ return n * _Point ;}
POINT change_to_points(CHANGE c){ return POINT(c / _Point + 0.5 ) ;}
CHANGE pips_to_change (PIP n){ return points_to_change(pips_to_points(n));}
PIP change_to_pips (CHANGE c){ return points_to_pips(change_to_points(c));}
POINT pips_to_points (PIP n){ if ( ( _Digits & 1 ) == 1 ) n *= 10.0 ; return POINT(n);}
PIP points_to_pips (POINT n){ PIP p = n; if ( ( _Digits & 1 ) == 1 ) p /= 10.0 ; return p;}
string prfx = "test" ;
string sellbutton = prfx + "sell" ;
string sounduse = "tick.wav" ;
int stoploss = 10 ;
int takeprofit = 10 ;
int magic = 12345 ;
int ticket = 0 ;
int slippage = 3 ;
double lot = 0.01 ;
double sl ;
bool stoploss_on = true ;
bool result ;
bool sound_use = true ;
//---
//---
int OnInit ()
{
ObjectCreate ( 0 , sellbutton, OBJ_BUTTON , 0 , 0 , 0 );
ObjectSetString ( 0 , sellbutton, OBJPROP_TEXT , "Sell" );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_XDISTANCE , 20 );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_YDISTANCE , 20 );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_XSIZE , 80 );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_YSIZE , 40 );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_CORNER , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_COLOR , clrWhite );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_BGCOLOR , clrMaroon );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_STATE , false );
ObjectSetInteger ( 0 , sellbutton, OBJPROP_ZORDER , 1 );
Print ( "ObjectsTotal: " , ObjectsTotal () );
return ( 0 );
}
//---
//---
void OnTick ()
{
//---
//---
return ;
}
//---
//---
void OnDeinit ( const int reason)
{
//---
ObjectsDeleteAll ( 0 , prfx );
//---
return ;
}
//---
//---
void OnChartEvent ( const int id ,
const long & lparam ,
const double & dparam ,
const string & sparam
)
{
// Sell
if ( sparam == sellbutton )
{
ObjectSetInteger ( 0 , sparam, OBJPROP_STATE , false );
ticket = Orderfuntions( sellbutton );
}
return ;
}
//---
//---
void SellCalcSLTP()
{
//---
if ( stoploss_on == true )
{
if ( OrderType () == OP_SELL ) sl = OrderOpenPrice () - pips_to_change( stoploss );
if ( OrderType () == OP_BUY ) sl = OrderOpenPrice () + pips_to_change( stoploss );
result = OrderModify ( OrderTicket (), OrderOpenPrice (), sl, OrderTakeProfit (), 0 , CLR_NONE );
if ( result && sound_use ) PlaySound ( sounduse );
}
//---
return ;
}
//---
//---
int Orderfuntions( string _Order_selector )
{
// Sell Order
SellCalcSLTP();
if ( _Order_selector == sellbutton )
{
ticket = OrderSend ( _Symbol , OP_SELL , lot, Bid , slippage, sl, takeprofit, "comment" , magic, 0 , clrMaroon );
}
return (ticket);
}
İyi görünüyor, ancak ordermodify'ı bu şekilde kullanamazsınız, önceOrderSelect() işleviyle bir sipariş seçmeniz gerekir.