Özellikle burada if ( OrderType( )==OP_BUY && OrderType( )==OP_SELL )
Eh, elbette, sipariş hem alım hem de satış için olabilir, ama ben ||
Rzhu!! Evet, uzaklaştım ... Ayni ..
if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point)
Bir noktanın kim olduğunu ve neden 0,5 ile çarpıldığını açıklamanızı öneririm. Evet, normalize double içermeyen bir seçenek, sıfırla karşılaştırıldığında o kadar güvenilir değildir. Burada çalışıyor.
Bilet bir tamsayı türüdür , OrderClose boolean... bunu yapmamak daha iyidir.
döngü sonsuzdur ve sadece piyasa emirleri silinmeye çalışılırken, bekleyen bir emir varsa, bu müzik ebedi olacaktır. Teşekkürler!! !!!!
//+------------------------------------------------------------------+//| AsctrendBuySellExpert_v1.mq4 code by Newdigital |//| https://www.forex-tsd.com |//| using Gordago software http://www.gordago.com |//| - Asctrend code for this EA was taken from |//| AscTrend_NonLag EA coded by of Igorad. |//| - "Non-Trading Hours" on the screen fixing code by Locutus |//| from Updated DayTradingMM EA |//+------------------------------------------------------------------+#property copyright "newdigital"#property link "https://www.forex-tsd.com"#include <stderror.mqh> // библиотека ошибок#include <stdlib.mqh>externint MAGIC = 100111 ;
externstring PARAMETERS_EXPERT = "PARAMETERS EXPERT" ;
externcolor clOpenBuy = Blue ;
externcolor clCloseBuy = Aqua ;
externcolor clOpenSell = Red ;
externcolor clCloseSell = Violet ;
externcolor clModiBuy = Blue ;
externcolor clModiSell = Red ;
externstring Name_Expert = "AsctrendBuySellExpert" ;
externbool UseSound = False;
externstring NameFileSound = "alert.wav" ;
externstring PARAMETERS_FILTER = "PARAMETERS FILTER" ;
externbool UseHourTrade = False;
externint FromHourTrade = 8 ;
externint ToHourTrade = 18 ;
externstring PARAMETERS_TRADE = "PARAMETERS TRADE" ;
externdouble Lots = 0.10 ;
externint Slippage = 4 ;
externdouble lStopLoss = 1000 ;
externdouble sStopLoss = 1000 ;
externdouble lTakeProfit = 1000 ;
externdouble sTakeProfit = 1000 ;
externdouble lTrailingStop = 1000 ;
externdouble sTrailingStop = 1000 ;
externstring PARAMETERS_INDICATOR_ONE = "ASCTrend" ;
externbool UseASCtrend = True;
externint RISK = 3 ;
int asctrend,asctrend1;
int ASCtrend,ASCtrend1;
void deinit() {
Comment ( "" );
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start(){
if (UseHourTrade){
if (( Hour ()>=FromHourTrade)&&( Hour ()<=ToHourTrade))
Comment ( "Trading Hours" );
else
{
Comment ( "Non-trading Hours" );
return ( 0 );
}
}
if ( Bars < 100 ){
Print ( "bars less than 100" );
return ( 0 );
}
if (lStopLoss< 10 ){
Print ( "StopLoss less than 10" );
return ( 0 );
}
if (lTakeProfit< 10 ){
Print ( "TakeProfit less than 10" );
return ( 0 );
}
if (sStopLoss< 10 ){
Print ( "StopLoss less than 10" );
return ( 0 );
}
if (sTakeProfit< 10 ){
Print ( "TakeProfit less than 10" );
return ( 0 );
}
if (UseASCtrend)
{
ASCtrend = ASCTrend(RISK);
bool ASCtrendBuy = ASCtrend> 0 && ASCtrend1< 0 ;
bool ASCtrendSell = ASCtrend< 0 && ASCtrend1> 0 ;
}
else {ASCtrendBuy = true; ASCtrendSell = true;}
if ( AccountFreeMargin ()<( 1000 *Lots)){
Print ( "We have no money. Free Margin = " , AccountFreeMargin ());
return ( 0 );
}
if (!ExistPositions()){
if ((ASCtrendBuy)){
OpenBuy();
return ( 0 );
}
if ((ASCtrendSell)){
OpenSell();
return ( 0 );
}
}
if (ExistPositions()){
if ( OrderType ()==OP_BUY){
if ((ASCtrendSell)){
CloseBuy();
return ( 0 );
}
}
if ( OrderType ()==OP_SELL){
if ((ASCtrendBuy)){
CloseSell();
return ( 0 );
}
}
}
TrailingPositionsBuy(lTrailingStop);
TrailingPositionsSell(sTrailingStop);
ASCtrend1=ASCtrend;
return ( 0 );
}
bool ExistPositions() {
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MAGIC) {
return (True);
}
}
}
return (false);
}
void TrailingPositionsBuy( int trailingStop) {
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MAGIC) {
if ( OrderType ()==OP_BUY) {
if (Bid- OrderOpenPrice ()>trailingStop* Point ) {
if ( OrderStopLoss ()<Bid-trailingStop* Point )
ModifyStopLoss(Bid-trailingStop* Point );
}
}
}
}
}
}
void TrailingPositionsSell( int trailingStop) {
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MAGIC) {
if ( OrderType ()==OP_SELL) {
if ( OrderOpenPrice ()-Ask>trailingStop* Point ) {
if ( OrderStopLoss ()>Ask+trailingStop* Point || OrderStopLoss ()== 0 )
ModifyStopLoss(Ask+trailingStop* Point );
}
}
}
}
}
}
void ModifyStopLoss( double ldStopLoss) {
bool fm;
fm = OrderModify ( OrderTicket (), OrderOpenPrice (),ldStopLoss, OrderTakeProfit (), 0 , CLR_NONE );
if (fm && UseSound) PlaySound (NameFileSound);
}
void CloseBuy() {
bool fc;
fc= OrderClose ( OrderTicket (), OrderLots (), Bid, Slippage, clCloseBuy);
if (fc && UseSound) PlaySound (NameFileSound);
}
void CloseSell() {
bool fc;
fc= OrderClose ( OrderTicket (), OrderLots (), Ask, Slippage, clCloseSell);
if (fc && UseSound) PlaySound (NameFileSound);
}
void OpenBuy() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
BroCoOrderSend( Symbol (),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC, 0 ,clOpenBuy);
if (UseSound) PlaySound (NameFileSound);
}
void OpenSell() {
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
BroCoOrderSend( Symbol (),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC, 0 ,clOpenSell);
if (UseSound) PlaySound (NameFileSound);
}
string GetCommentForOrder() { return (Name_Expert); }
double GetSizeLot() { return (Lots); }
double GetStopLossBuy() { return (Bid-lStopLoss* Point );}
double GetStopLossSell() { return (Ask+sStopLoss* Point ); }
double GetTakeProfitBuy() { return (Ask+lTakeProfit* Point ); }
double GetTakeProfitSell() { return (Bid-sTakeProfit* Point ); }
int ASCTrend( int risk )
{
double smin, smax, bsmin, bsmax;
int len = 3 + 2 *risk;
smin=Low[Lowest( NULL , 0 ,MODE_LOW,len, 1 )];
smax=High[Highest( NULL , 0 ,MODE_HIGH,len, 1 )];
bsmax = smax-(smax - smin)*( 33.0 -risk)/ 100.0 ;
bsmin = smin+(smax - smin)*( 33.0 -risk)/ 100.0 ;
asctrend = asctrend1;
if (Close[ 1 ]>bsmax) asctrend= 1 ;
if (Close[ 1 ]<bsmin) asctrend=- 1 ;
asctrend1 = asctrend;
return (asctrend);
}
//+------------------------------------------------------------------+//| Функция для работы с дилинговым центром BroCo |//+------------------------------------------------------------------+int BroCoOrderSend( string symbol,
int cmd,
double volume,
double price,
int slippage,
double stoploss,
double takeprofit,
string comment,
int magic,
datetime expiration,
color arrow_color)
{
int ticket = OrderSend (symbol,cmd, volume, price, slippage, 0 , 0 , comment, magic, expiration, arrow_color);
int check = - 1 ;
if (ticket > 0 && (stoploss != 0 || takeprofit != 0 )) {
if (! OrderModify (ticket, price, stoploss, takeprofit,expiration, arrow_color)) {
check = GetLastError ();
if (check != ERR_NO_ERROR) {
Print ( "OrderModify error: " , ErrorDescription(check));
}
}
} else {
check = GetLastError ();
if (check != ERR_NO_ERROR){
Print ( "OrderSend error: " ,ErrorDescription(check));
}
}
return (ticket);
}
//----------------------------------------------------------------
Herkese selam! Beyler, yükselen trend göstergesi üzerinde çalışan eski bir Uzman Danışmana rastladım, uzun zamandır bu göstergenin gerçek zamanlı olarak nasıl davrandığını kontrol etmek istiyordum, ancak noktaları takip etmek her zaman mümkün olmuyor ve alım satım resmi tam değil . Test cihazında kontrol ettim, her nokta göründüğünde bir sinyal var, ancak demoya koydum ve öyle bir şey fark ettim ki demoda sinyalleri atlıyor, uzman günlüğe hiçbir şey yazmasa da, dürttüm kodda dolaştım ve engelin ne olduğunu anlamadım :( belki biri burnunu sokar sorun ne olabilir?
Terminali yeniden yükledikten sonra MetaEditor çalışmayı durdurdu. Yalnızca gösterge kodunda hiçbir şeyi değiştirmezseniz derlenir. Bir şey değiştiyse, en azından çizginin rengi bile, hata veriyor:
İşletim Sistemi Windows 7. Belki birisi benzer bir aksaklıkla karşılaşmıştır. Bana ne yapacağımı söyle?
Uzun kodları olan çocuklar! Bir başkasının kodunun, her şeyden önce, henüz şifresi çözülmemiş bir kriptogram olduğunu bir kez daha tekrarlamak istiyorum! Ve bu küçük bir iş değil! Bazı programcıların listedeki kilometreleri araştırmak isteyeceğini düşünüyor musunuz? Kodumu birinize vereyim, sadece üç bin satır ve bu kodun küçük bir yanlış anlaşılmasını ortadan kaldırmanızı rica ediyorum. Benim beynimin içine dalmak istediğini mi sanıyorsun? Yine şüpheliyim. Bu nedenle, sizden bir dileğim var - kilit bir soru sorarken sorunu olabildiğince kısa bir şekilde tanımlayın ve aynı zamanda açıklamayı özü anlamak için yeterli hale getirin. Aksi takdirde, ağlamanız boşluğa yapılan bir çığlıktır. Kod gönderiye eklenebilir. Bütün bunlar gerekli ve yeterlidir.
Hepiniz hoşgeldiniz!
Lütfen bu soruna yardımcı olun: Yeni bir çubuk göründüğünde (D aralığı) göstergeyi yeniden çizmeye zorlayamıyorum. P
manuel olarak yeniden başlatmanız gerekir.
zlliot dalgaları için göstergeyi indirmek mümkün mü
Tabi ki yapabilirsin. Bulup indirmeniz gerekiyor
zilliot dalga göstergesi sitesi:mql4.com
teşekkürler splxgf!!!!!!!!!!!!!!!
Özellikle burada if ( OrderType( )==OP_BUY && OrderType( )==OP_SELL )
Eh, elbette, sipariş hem alım hem de satış için olabilir, ama ben ||
Rzhu!! Evet, uzaklaştım ... Ayni ..
if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point)
Bir noktanın kim olduğunu ve neden 0,5 ile çarpıldığını açıklamanızı öneririm. Evet, normalize double içermeyen bir seçenek, sıfırla karşılaştırıldığında o kadar güvenilir değildir. Burada çalışıyor.
Bilet bir tamsayı türüdür , OrderClose boolean... bunu yapmamak daha iyidir.
döngü sonsuzdur ve sadece piyasa emirleri silinmeye çalışılırken, bekleyen bir emir varsa, bu müzik ebedi olacaktır. Teşekkürler!! !!!!
Beyler söyleyin ne fark eder?????
if(OrderSymbol()!=Symbol())continue;
ve
if(OrderSymbol()==Symbol())
??????????
Evet, bilmiyorum. Peki, devam et; önceki döngüye göndermeli ve nasıl yazıldığına bağlı olarak, muhtemelen bir eşleşmeye kadar yinelenebilir.
Yardım!!!!!!! (bir önceki sayfadaki mesajım)!
Terminali yeniden yükledikten sonra MetaEditor çalışmayı durdurdu. Yalnızca gösterge kodunda hiçbir şeyi değiştirmezseniz derlenir. Bir şey değiştiyse, en azından çizginin rengi bile, hata veriyor:
İşletim Sistemi Windows 7. Belki birisi benzer bir aksaklıkla karşılaşmıştır. Bana ne yapacağımı söyle?