artmedia70 : 깃발이 필요하지 않습니다. 깃발은 비상 상황에서 분실될 수 있습니다. 열려 있는 위치가 있는지 확인하는 것이 좋으며, 그렇다면 추가로
아, 깨달은 것 같습니다. 나는 논리를 이해했다, 그것이 내가 얻은 것이다. 그러나 컴파일할 때 ')' 오류가 발생합니다. 할당 예상 D:\Àëïiaðè\experts\Sp.mq4 (160, 92). 모든 대괄호를 열 번 확인했는데 오류를 찾을 수 없습니다. 폴터가이스트는 일종의 괴물입니다. artmedia70 , 어렵지 않다면 어디 오류인지 알려주세요.
externdouble Lots = 0.1 ;
externstring Сomment = "Pattern_1" ;
externint TakeProfit = 0 ;
externint StopLoss = 0 ;
externint Step = 0 ;
externint BULevel = 200 ;
externint NotBULevel = 20 ; // Уровень безубытка в пунктахexternint Slippage = 2 ; // проскальзывание externint Magic = 111 ;
int ticket, otype;
double TP, price;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
if ( Digits == 3 || Digits == 5 ) // для пятизначного брокера
{
TakeProfit *= 10 ;
StopLoss *= 10 ;
Slippage *= 10 ;
Step *= 10 ;
}
return ( 0 );
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
if (CountTrades()== 0 && Open[ 1 ]>Close[ 1 ] && Open[ 2 ]<Close[ 2 ] && High[ 1 ]>High[ 2 ] && Low[ 1 ]<Low[ 2 ]) // продажа
{
ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Red);
if ( OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES))
{
TP= NormalizeDouble (Bid - TakeProfit * Point , Digits );
OrderModify(ticket, OrderOpenPrice(), 0 ,TP, 0 );
}
}
elseif (CountTrades()== 0 && Open[ 1 ]<Close[ 1 ] && Open[ 2 ]>Close[ 2 ] && High[ 1 ]>High[ 2 ] && Low[ 1 ]<Low[ 2 ]) // покупка
{
ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Blue);
if ( OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES))
{
TP= NormalizeDouble (Ask + TakeProfit * Point , Digits );
OrderModify(ticket, OrderOpenPrice(), 0 ,TP, 0 );
}
}
if (CountTrades()> 0 )
{
otype = FindLastOrderType();
if (otype == OP_BUY)
{ // ценапоследнего ордера на покупку
price = FindLastBayPrice();
if ((Bid - price) / Point >= Step)
{
ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Red);
}
}
elseif (otype == OP_SELL)
{ // цена последнего ордера на продажу
price = FindLastSellPrice()
if ((price - Ask) / Point >= Step)
{
ticket= OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask,Slippage, 0 , 0 , "Pattern_1" , 111 , 0 ,Blue);
}
}
}
return ( 0 );
}
//+------------------------------------------------------------------+int CountTrades() // количество открытых ордеров
{
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()== 111 )
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return (count);
}
//+------------------------------------------------------------------+int FindLastOrderType() // вычисляем тип последнего ордера
{
int oticket, ticketnumber= 0 , OType;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()== 111 )
{
oticket=OrderTicket();
if (oticket > ticketnumber)
{
ticketnumber = oticket;
OType = OrderType(); // самый последний тикет
}
}
}
}
return (OType);
}
//+------------------------------------------------------------------+double FindLastBayPrice() // находим цену последнего ордера на покупку
{
int oticket, ticketnumber= 0 ;
double oprice;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()== 111 && OrderType() = OP_BUY)
{
oticket=OrderTicket();
if (oticket > ticketnumber)
{
ticketnumber = oticket;
oprice = OrderType(); // самый последний тикет
}
}
}
}
return (oprice);
}
//+------------------------------------------------------------------+double FindLastSellPrice() // находим цену последнего ордера на продажу
{
int oticket, ticketnumber= 0 ;
double oprice;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()== 111 && OrderType() = OP_SELL)
{
oticket=OrderTicket();
if (oticket > ticketnumber)
{
ticketnumber = oticket;
oprice = OrderType(); // самый последний тикет
}
}
}
}
return (oprice);
}
//+------------------------------------------------------------------+void BU()
{
for ( int a= 0 ; a< OrdersTotal (); a++)
{
if ( OrderSelect (a, SELECT_BY_POS))
{
if (OrderMagicNumber()!= 111 || OrderSymbol()!= Symbol ()) continue ;
if (OrderType()==OP_BUY)
{
if (OrderOpenPrice()<=(Bid-BULevel* Point -NotBULevel* Point )&& OrderOpenPrice()>OrderStopLoss()) // последнеее условие БУ + 20 пипсов
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NotBULevel* Point ,OrderTakeProfit(), 0 ,Green);
}
}
if (OrderType() == OP_SELL)
{
if (OrderOpenPrice()>=(Ask+BULevel* Point +NotBULevel* Point )&& (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss() == 0 )) // последнеее условие БУ + 20 пипсов
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel* Point ,OrderTakeProfit(), 0 ,Red);
}
}
}
}
return ( 0 );
}
음, 매 틱, 새로운 정보가 전달되고, 매 틱마다 신호가 매수로 이동하지만, 서버는 그 순간에 로그인을 시도합니다.(틱 동안)
그럼 뭐가 그렇게 끔찍해?
하지만 IsConnected() 함수가 있습니다.
그럼 뭐가 그렇게 끔찍해?
하지만 IsConnected() 함수가 있습니다.
글쎄, 일어난 최악의 일 - 긍정적 인 거래가 열리지 않았습니다 :)
그래서 저는 실제로 무슨 일이 일어났는지 알고 싶습니다. 중개인이 뭔가를 일으키거나 제 입장에서 문제가 발생한 것입니다.
1. 글쎄, 일어난 최악의 일 - 긍정적 인 거래가 열리지 않았습니다 :)
2. 그래서, 나는 실제로 무슨 일이 일어났는지 알고 싶습니다. 중개인이 무언가를 선동했거나 나에게 문제가 있었습니다.
1. 이것은 말 그대로 정상적이고 자연스러운 현상입니다.
2. 알 수 있는 방법이 없습니다. 매우 자주 몇 초 동안 연결이 끊어집니다.
1. 이것은 말 그대로 정상적이고 자연스러운 현상입니다.
2. 알 수 있는 방법이 없습니다. 매우 자주 몇 초 동안 연결이 끊어집니다.
이 브로커에 대한 테스트의 한 달 동안, 이것은 처음으로 발생했습니다. 비록 이미 4개의 잼을 발견했지만 다른 하나를 찾아야 할 때인 것 같습니다. :)
답변 감사합니다!)
당신이 쓴 것을 본 적이 있습니까?!
"여기 개가 뒤졌다"는 말이 있습니다.
파시브) 알겠습니다.
깃발이 필요하지 않습니다. 깃발은 비상 상황에서 분실될 수 있습니다. 열려 있는 위치가 있는지 확인하는 것이 좋으며, 그렇다면 추가로
아, 깨달은 것 같습니다. 나는 논리를 이해했다, 그것이 내가 얻은 것이다. 그러나 컴파일할 때 ')' 오류가 발생합니다. 할당 예상 D:\Àëïiaðè\experts\Sp.mq4 (160, 92). 모든 대괄호를 열 번 확인했는데 오류를 찾을 수 없습니다. 폴터가이스트는 일종의 괴물입니다. artmedia70 , 어렵지 않다면 어디 오류인지 알려주세요.
이상한 종류.
함수가 올바르게 작성되었는지 알려주십시오.
더블 GetLastUpperFractal()
{
이중 LastUpperFractalPrice = 0;
(int i = 0, i<=막대, i++)
{
이중 FractalUp = iFractals(Symbol(), PERIOD_M5 , MODE_UPPER, i);
if (FractalUp != 0) LastUpperFractalPrice = FractalUp;
}
반환(LastUpperFractalPrice);
}
//+----------------------------------------------- --------------------+
더블 GetLastLowerFractal()
{
이중 LastLowerFractalPrice = 0;
(int i = 0, i<=막대, i++)
{
이중 FractalDown = iFractals(Symbol(),PERIOD_M5,MODE_LOWER,i);
if (FractalDown != 0) LastLowerFractalPrice = FractalDown;
}
반환(LastLowerFractalPrice);
}