누가 로봇을 도울 수 있습니까? 로봇이 작동하지 않는 이유는 무엇입니까? - 페이지 6

 
최소한 어떤 오류가 표시됩니까?
 

mt4 ecn, ndd, stp에 대한 내 기능은 다음과 같습니다.

1년에 한 번도 실수하지 않고

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

//| 주문 개시 기능(BeerGod) |

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

//| 옵션: |

//| sy - 기기 이름("" - 현재 기호) |

//| 작전 |

//| 많은 |

//| sl - 정지 수준 |

//| tp - 수준을 가져가라 |

//| mn - 매직넘버 |

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


bool OpenPosition(문자열 sy, int op, 이중 ll, 이중 sl=0, 이중 tp=0, int MagicNumber=0)

{

이중 MinL1 = MarketInfo(Symbol(),MODE_MINLOT);

이중 MaxL1 = MarketInfo(Symbol(),MODE_MAXLOT);

ll = NormalizeDouble(ll,2);

if (ll < MinL1) ll = MinL1; 그렇지 않으면 ll = ll;

if (ll > MaxL1) ll = MaxL1; 그렇지 않으면 ll = ll;

if (op == 0) // 매수 열기

{

// 무료 자금의 가용성 확인

if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," 매수 주문을 열 수 없습니다. 금액이 충분하지 않습니다 .");

리턴(0);

}

새로 고침();


// 주문 열기

int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);

if(티켓구매<0)

Print(sy," OpenPosition. OrderSend 구매 실패 #",GetLastError());

또 다른

Print(sy, "OpenPosition. OrderSend 구매 성공");


// 절전(일시 중지);


// 주문 수정(이익실현 및 손절매 설정)

if (sl !=0 || tp !=0)

{

//--- SL 및 TP 가격의 계산 값을 정규화해야 합니다.

이중 BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

이중 BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

//--- 입력 값이 0이면 수정 비용을 0으로 바꿉니다.

if (sl == 0) BSLoss = 0;

if (tp == 0) BTProfit = 0;


bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);

if(!재구매)

Print(sy," OpenPosition. OrderModify 구매 실패 #",GetLastError());

또 다른

Print(sy, "OpenPosition. OrderModify 구매 성공");

}

}


if (op == 1) // 오픈 매도

{

// 무료 자금의 가용성 확인

if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," 매도 주문을 열 수 없습니다. 자금이 충분하지 않습니다.");

리턴(0);

}

새로 고침();


// 주문 열기

int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);

if(티켓 판매<0)

Print(sy," OpenPosition. OrderSend 판매 실패 #",GetLastError());

또 다른

Print(sy, "OpenPosition. OrderSend Sell successful");


// 절전(일시 중지);


// 주문 수정(이익실현 및 손절매 설정)

if (sl !=0 || tp !=0)

{

//--- SL 및 TP 가격의 계산 값을 정규화해야 합니다.

이중 SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

이중 STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

//--- 입력 값이 0이면 수정 비용을 0으로 바꿉니다.

if (sl == 0) SSLoss = 0;

if (tp == 0) STProfit = 0;


부울 재판매 = OrderModify(티켓 판매,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);

if(! 재판매)

Print(sy," OpenPosition. OrderModify 판매 실패 #",GetLastError());

또 다른

Print(sy, "OpenPosition. OrderModify 판매 성공");

}

}

반환(참);

}

//끝

 
PS 중재자, 코드는 버튼을 통해 삽입되지 않습니다.
 
Vladimir Zubov :
PS 중재자, 코드는 버튼을 통해 삽입되지 않습니다.

코드를 삽입하여 Skype를 통해 무료(무료) 온라인 수업을 진행합니다 :)

 if (sl == 0 ) SSLoss = 0 ;
 
Karputov Vladimir :

코드를 붙여넣어 Skype를 통해 무료(무료) 온라인 수업을 진행하고 있습니다 :)

 //+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (BeerGod)                                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+

bool OpenPosition( string sy, int op, double ll, double sl= 0 , double tp= 0 , int MagicNumber= 0 )
{
   double MinLl = MarketInfo( Symbol (),MODE_MINLOT);
   double MaxLl = MarketInfo( Symbol (),MODE_MAXLOT);
   ll = NormalizeDouble (ll, 2 );
   if (ll < MinLl) ll = MinLl; else ll = ll;
   if (ll > MaxLl) ll = MaxLl; else ll = ll;
   
   if (op == 0 ) // Открытие BUY
   {
       // Проверяем доступность свободных средств
       if ((AccountFreeMarginCheck(sy,OP_BUY,ll)<= 0 ) || ( GetLastError ()== 134 ))
            {
               Print (sy, " " ,ll, " It is impossible to open the order Buy, not enough money." );
               return ( 0 );
            }
      RefreshRates();

       // Открываем ордер
       int ticketbuy = OrderSend (sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage, 0 , 0 ,Comments,MagicNumber, 0 ,BuyColor);
         if (ticketbuy< 0 )
         Print (sy, " OpenPosition. OrderSend Buy fail #" , GetLastError ());
         else
         Print (sy, " OpenPosition. OrderSend Buy successfully" );

       // Sleep (Pause);

       // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
       if (sl != 0 || tp != 0 )
            {
             //--- Вычисленные значения цен SL и TP должны быть нормализованы
             double BSLoss = NormalizeDouble (MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             double BTProfit = NormalizeDouble (MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             //--- Если входящие значения ноль то заменяем цену модификации на ноль
             if (sl == 0 ) BSLoss = 0 ;
             if (tp == 0 ) BTProfit = 0 ;

             bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit, 0 ,StopColor);
                   if (!resbuy)
                     Print (sy, " OpenPosition. OrderModify Buy fail #" , GetLastError ());
                   else
                     Print (sy, " OpenPosition. OrderModify Buy successfully" );
            }
   }

   if (op == 1 ) // Открытие Sell
   {
       // Проверяем доступность свободных средств
       if ((AccountFreeMarginCheck(sy,OP_SELL,ll)<= 0 ) || ( GetLastError ()== 134 ))
            {
               Print (sy, " " ,ll, " It is impossible to open the order Sell, not enough money." );
               return ( 0 );
            }
      RefreshRates();

       // Открываем ордер
       int ticketsell = OrderSend (sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage, 0 , 0 ,Comments,MagicNumber, 0 ,SellColor);
         if (ticketsell< 0 )
         Print (sy, " OpenPosition. OrderSend Sell fail #" , GetLastError ());
         else
         Print (sy, " OpenPosition. OrderSend Sell successfully" );

       // Sleep (Pause);

       // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
       if (sl != 0 || tp != 0 )
            {
             //--- Вычисленные значения цен SL и TP должны быть нормализованы
             double SSLoss = NormalizeDouble (MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             double STProfit = NormalizeDouble (MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),( int )MarketInfo(sy,MODE_DIGITS));
             //--- Если входящие значения ноль то заменяем цену модификации на ноль
             if (sl == 0 ) SSLoss = 0 ;
             if (tp == 0 ) STProfit = 0 ;

             bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit, 0 ,StopColor);
                   if (!ressell)
                     Print (sy, " OpenPosition. OrderModify Sell fail #" , GetLastError ());
                   else
                     Print (sy, " OpenPosition. OrderModify Sell successfully" );
            }
   }
return (True);
}
//End
 
Karputov Vladimir :

코드를 삽입하여 Skype를 통해 무료(무료) 온라인 수업을 진행합니다 :)

방금 코드를 삽입했다면 예, 더 많이 작성하면 코드가 사라집니다.
 
PHP & MQL 계산시 어딘가 에러가 나는데 어셈블러가 필요하시면 제가 도와드리겠습니다.
 
GIM :
덕분에!

준비가 되었습니다. 코드에 대해 질문이 있는 경우 개인 또는 스카이프에서 작성할 수도 있습니다.

파일:
GIM.mq4  9 kb
 
Sergey Gritsay :

준비가 되었습니다. 코드에 대해 질문이 있는 경우 개인 또는 스카이프에서 작성할 수도 있습니다.

"가격 없음"이라는 메시지와 함께 경고가 나타납니다. 새로운 틱을 기다리는 중...
 
GIM :
"가격 없음"이라는 메시지와 함께 경고가 나타납니다. 새로운 틱을 기다리는 중...

가격이 없으면 거래를 열 수 없습니다. 내 데모 계정 에서 잘 작동했고 첫 번째 시도에서 거래가 열렸습니다. 자세한 정보 필요