[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 594

 

for(cnt=0;cnt<전체;cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES );
if(OrderType()<=OP_SELL && // 열린 위치 확인
OrderSymbol()== lSymbol() ) // 기호 확인
{

?

 

코드 plz와 함께 도와주세요! 이 코드에서 오류 138이 발생하는 이유는 무엇입니까? 그리고 그녀는 왜 여기에 있습니까? 거래가 열렸지만 가격을 닫을 때 어떤 이유에서인지 그렇지 않습니까? 모든 것이 간단합니다. 고문은 초 후에 거래를 닫고 프랙탈이 깨졌을 때 거래를 열어야 합니다. 조언 미리 감사드립니다

외부 정수 s=5;



외부 정수 시간 = 60;
extern int 로트=1;
extern int 미끄러짐 = 5;
외부 이중 sl=NULL;
외부 이중 tp=NULL;
double upfr,dnfr=0.0;//마지막 도형의 수준
이중 tClose=NULL;
이중 tOpen=NULL;
정수 플래그 = 0;
정수 초기화()
{
//----



//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |

//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+

int start()//탈출 시 열기 및 s 촛불 후 닫기
{
//----
upfr=iFractals(Symbol(), PERIOD_H1 , MODE_UPPER,4);
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
// 피어싱으로 주문 열기
if(upfr>0 && High[1]>upfr && flag==0) //업 프랙탈과 업 프랙탈 수준을 초과한 경우
{
tOpen=시간[0];
t닫기=t열기+s*시간*60;
OrderSend(Symbol(),OP_BUY,lots,Bid,slippage,sl,tp);
플래그=1;
}
if(dnfr>0 && Low[1]<dnfr && flag==0)//프랙탈이 다운되고 프랙탈 수준이 낮은 경우
{
tOpen=시간[0];
t닫기=t열기+s*시간*60;
OrderSend(Symbol(),OP_SELL,lots,Ask,slippage,sl,tp);
플래그=1;
}

//시간 경과 후 주문 마감
if(Time[0]>=tClose )// 닫기 전 시간이 경과한 경우
{
Print("닫기 기능");
또는 닫기();
플래그=0;
}


//----
리턴(0);
}
//+----------------------------------------------- --------------------+
// 모든 주문을 닫습니다.
무효 OrClose()
{
for(int i=OrdersTotal()-1;i>=1;i--)
{
if(주문선택(i,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005);
}
}
리턴(0);
}
 
Qwertee :

코드 plz와 함께 도와주세요! 이 코드에서 오류 138이 발생하는 이유는 무엇입니까? 그리고 그녀는 왜 여기에 있습니까? 거래가 열렸지만 가격을 닫을 때 어떤 이유에서인지 그렇지 않습니까?

 OrderClose ( OrderTicket (),lots, OrderOpenPrice (), 0.0005 );

로 변경

         if ( OrderType ()==OP_BUY)
           {
             OrderClose ( OrderTicket (), OrderLots (),Bid,slippage);
           }
         else
           {
             OrderClose ( OrderTicket (), OrderLots (),Ask,slippage);
           }
 
좋은 시간입니다. 지그재그 표시기를 처리한 전문가는 마지막 두 개의 최고 값인 높음과 낮음을 얻는 방법을 알려주세요.
 

안녕하세요.

주문을 여는 데 도움이 됩니다. 어드바이저를 데모계정 에 넣어놨는데 구매조건이나 판매조건이 되면 에러 130이 나옵니다.

다음은 주문을 여는 기능입니다.

 int NewOrder( int Cmd, double Lot)
{ double TP= 0 ; //тейкпрофит
 double SL= 0 ; //стоплосс
 double PR= 0 ; //Цена
 while (! IsTradeAllowed ()) Sleep ( 100 );
 RefreshRates ();
 if (Cmd==OP_BUY)
   {PR=Ask;
     if (TakeProfit> 0 ) TP= NormalizeDouble (Ask+TakeProfit* Point , Digits );
     if (StopLoss> 0 ) SL= NormalizeDouble (Bid-StopLoss* Point , Digits );}
 if (Cmd==OP_SELL)
   {PR=Bid;
     if (TakeProfit> 0 ) TP= NormalizeDouble (Bid-TakeProfit* Point , Digits );
     if (StopLoss> 0 ) SL= NormalizeDouble (Ask+StopLoss* Point , Digits );}
 int tic= OrderSend ( Symbol (),Cmd,Lot,PR, 20 ,SL,TP, "" , 0 , 0 , CLR_NONE );
 if (tic< 0 ) Print ( "Ошибка открытия ордера: " , GetLastError ());
return (tic);}

로트를 계산하면 모든 것이 정상이며 다른 고문에게 확인했습니다.

Alpari의 데모 계정에 Micro를 입력합니다. 테이크 및 스톱 비용은 각각 100점입니다. 10점 때문에 알파리에는 5개의 기호가 있습니다.

 
시가 정상화
 
FAQ :
시가 정상화


어떻게 정상화할 것인가?

그래서?

PR= NormalizeDouble (Ask, Digits );

그렇다면 아무것도 변경되지 않습니다.

저는 아직 프로그래밍 경험이 많지 않습니다. 정규화하는 방법을 설명해 주시겠습니까?

 
그런 다음 스탑 레벨의 크기를 미리 확인하고 스탑 및 이익보다 크면 수정하십시오. 0이면. 그런 다음 제로 스탑과 이익으로 먼저 주문을 한 다음 원하는 수준으로 수정해야 합니다.
 

좋은 저녁이에요. 문제는 거래의 일부를 닫을 때 고문이 새 티켓으로 새 거래를 여는 것입니다. 그리고 새로운 질서의 마법은 그대로 남아 있습니까?

 
MetaTrader 4를 설치하고 데모 계정을 개설했습니다. 오픈 클로즈 주문을 시도했습니다. 이제 "이전 주문을 닫고 새 주문을 열려면 2개의 양초 차이가 필요합니다"와 같은 정보를 사용하여 가격이 상승할 때 판매 주문 을, 가격이 하락할 때 구매 주문을 시작하도록 터미널 자체를 만드는 방법은 무엇입니까?