잘못 삽입했지만 여전히 제대로 작동하지 않습니다. 왜냐하면 ... 왜냐하면.)) 간단히 말해서 다음과 같아야 합니다.
1) init에서 AllowNewOrders 변수를 만듭니다(존재하지 않는 경우).
2) 닫힐 때까지 새 주문을 생성합니다. 이 기호의 OnTick은 유휴 상태이지만 다른 기호의 OnTick은 작동합니다.
3) 다른 기호에 대한 2단계는 MaxOpenOrders 제한에 도달할 때까지 수행됩니다.
4) 주문 종료 시 수익성이 없거나 0인 경우 AllowNewOrders를 통해 모든 사본에 대해 신규 주문을 개시하는 것을 금지합니다.
[따라서 즉시 문제 - 패배한 시리즈가 끝나면 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?]
5) 4번 항목이 충족되지 않으면 새 주문을 열 수 있습니다.
프로그램은 이미 MaxOpenOrders=1과 함께 작동해야 합니다(SHOULD ALREADY). 실패한 주문에 따라 새로운 주문 AllowNewOrders=0을 금지하고 어떤 이유로 다음 OrderSend 가 주문을 열지 않을 때 여전히 문제가 있을 수 있습니다. 이 경우에 내가 어떻게 보험에 가입하는지 아래에 쓸 것입니다 ...
intOnInit ()
{
if (! GlobalVariableCheck ( "AllowNewOrders" )) GlobalVariableSet ( "AllowNewOrders" , 1 );
return ( INIT_SUCCEEDED );
}
//----------------------------------------------------------------------voidOnTick ()
{
if (CountTrades() == 0 ) // Количество ордеров должно равняться нулю
{
if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
// Если последняя сделка убыточная, то открывается такая же, но с увеличенным лотом
{
GlobalVariableSet ( "AllowNewOrders" , 0 );
Type = TypeLastHistOrder();
if (Type == OP_BUY) Price = Ask;
if (Type == OP_SELL) Price = Bid;
Lot = NormalizeDouble (LotsLastHistOrder()*Multiplier, 2 );
ticket = OrderSend ( Symbol (), Type, Lot, Price, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
}
elseGlobalVariableSet ( "AllowNewOrders" , 1 );
if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0 )
// Если прибыль последней сделки равняется нулю, то открывается такая же
{
GlobalVariableSet ( "AllowNewOrders" , 0 );
Type = TypeLastHistOrder();
if (Type == OP_BUY) Price = Ask;
if (Type == OP_SELL) Price = Bid;
Lot = NormalizeDouble (LotsLastHistOrder(), 2 );
ticket = OrderSend ( Symbol (), Type, Lot, Price, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
}
elseGlobalVariableSet ( "AllowNewOrders" , 1 );
if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
|| CountHistTrades() == 0 )
// Если последняя сделка прибыльная или это первая сделка, то открывается ордер
{
if ( OrdersTotal () >= MaxOpenOrders || GlobalVariableGet ( "AllowNewOrders" ) == 0 ) return ;
if (SignalBuy())
{
ticket = OrderSend ( Symbol (), OP_BUY, Lots, Ask, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
}
if (SignalSell())
{
ticket = OrderSend ( Symbol (), OP_SELL, Lots, Bid, Slippage, 0 , 0 , IntegerToString (Exp), Magic);
}
}
}
}
안녕하세요! 게시물의 기능을 사용할 때 알려주십시오 (각 주문에는 고유 한 마법이 있습니다) - http://forum.forexpeoples.ru/showthr...=1#post1715092 , 판매 또는 구매에 대한 최신 주문을 검색하는 방법, 또는 일련의 주문을 업그레이드하는 것은 각 주문에 고유한 마법이 없지만 각 주문 시리즈에는 고유한 마법이 있는 것처럼 보일 것입니다. 저것들. 마법을 사용하는 새로운 주문 시리즈가 열리면 기존 시리즈가 마법으로 주문을 계속 연다고 가정합니다. 각 시리즈에는 고유 한 이익이 있으며 이러한 일련의 주문이 많이 있습니다.
이러한 조건에서 아래 코드는 어떻게 변경될 수 있습니까? for(cnt=OrdersTotal()-1;cnt>=0;cnt--){ if (! OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) 계속; if(OrderSymbol()!=Symbol()) 계속; if(OrderMagicNumber() < startMagicNumber || OrderMagicNumber() >= startMagicNumber + MaxTrades) 계속;
시리즈의 첫 주문을 열 때 마법 생성 코드를 설정했는데 같은 시리즈에서 새 주문을 열 때 문제가 있습니다.
게시물의 매직 생성 코드 자체: //+----------------------------------------------- --------------------+ // keekkenen: 시리즈의 다음 마법을 얻습니다. int getNextMagicNumber(){ 정수 마법 = 비어 있음;
if (OrdersTotal() == 0) { 반환(startMagicNumber); }
for (int i = startMagicNumber; i < startMagicNumber + MaxTrades; i++){ 매직 = checkMarketByMagic(i); if (magic != EMPTY) break; }
if (마법 == 비어 있음){ 매직 = startMagicNumber; // 시리즈의 첫 번째 } 또 다른 { 마법++; // 시리즈의 다음 }
리턴(마법); } //+----------------------------------------------- --------------------+ // keekkenen: 지정된 마법으로 시장에 주문이 있는지 확인 int checkMarketByMagic(int 마술){ for(int i = 0; i < OrdersTotal(); i++){ if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 계속; if(OrderSymbol() != Symbol()) 계속; if(OrderMagicNumber() == 마법) return(마법); } 반환(빈); } //+----------------------------------------------- --------------------+
포럼의 신사 여러분, 좋은 하루 되세요. 가지를 혼동했다면 죄송하지만 TOPIC을 제대로 붙일 곳을 찾지 못했으니 걷어차지 마세요.
얼마 전 사용자들의 기존 신규 어드바이저를 찾기 위해 인터넷 검색을 하던 중, 설명에 따르면 기준이 많았고 내 불행에 관심을 두지 않았고, 이름도.
아마 보거나 읽은 누군가가 적어도 이름을 알려 주면 Google이 일을 할 것입니다. 만약 있다면 그것을 선물로 받아 들일 것입니다. 비슷한 행동을 하는 비슷한 고문이 있을지도 모릅니다.
어드바이저의 의미를 설명하겠습니다.
대략적으로 그 작업은 다음과 같습니다.
1. 수동으로 포지션을 개설했습니다 (예: 구매). 2. 고문은 그에게 손절매를 설정하고 설정에 따라 이익을 얻습니다. 3. 이익실현으로 주문 마감 - 어드바이저는 첫 번째 손절매를 잡거나 최종 이익실현이 있을 때까지 즉시 또 다른 매수를 열고 동일한 손절매를 설정하고 이익실현을 합니다. 4. 위치가 정지 손실로 닫히면 로봇은 다른 작업을 수행하지 않습니다. EA는 다음 주문이 수동으로 열리기를 기다리고 있습니다.
잘못 삽입했지만 여전히 제대로 작동하지 않습니다. 왜냐하면 ... 왜냐하면.)) 간단히 말해서 다음과 같아야 합니다.
1) init에서 AllowNewOrders 변수를 만듭니다(존재하지 않는 경우).
2) 닫힐 때까지 새 주문을 생성합니다. 이 기호의 OnTick은 유휴 상태이지만 다른 기호의 OnTick은 작동합니다.
3) 다른 기호에 대한 2단계는 MaxOpenOrders 제한에 도달할 때까지 수행됩니다.
4) 주문 종료 시 수익성이 없거나 0인 경우 AllowNewOrders를 통해 모든 사본에 대해 신규 주문을 개시하는 것을 금지합니다.
[따라서 즉시 문제 - 패배한 시리즈가 끝나면 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?]
5) 4번 항목이 충족되지 않으면 새 주문을 열 수 있습니다.
프로그램은 이미 MaxOpenOrders=1과 함께 작동해야 합니다(SHOULD ALREADY). 실패한 주문에 따라 새로운 주문 AllowNewOrders=0을 금지하고 어떤 이유로 다음 OrderSend가 주문을 열지 않을 때 여전히 문제가 있을 수 있습니다. 이 경우에 내가 어떻게 보험에 가입하는지 아래에 쓸 것입니다 ...
Alexander님 감사합니다. 내일 확인하겠습니다. [따라서 즉시 문제 - 패배한 시리즈가 종료될 때 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?] MaxOpenOrders>1이 어떤 값이면 이론적으로 AllowNewOrders=1도 더 커야 합니다. 같은 값으로. 그러나 이 버전의 프로그램에서는 어쨌든 하나 이상의 시리즈가 계획되어 있지 않기 때문에 지금은 이것에 신경 쓰지 않고 MaxOpenOrders를 완전히 제거할 수 없습니다.
alvlaf : Alexander님 감사합니다. 내일 확인하겠습니다. [따라서 즉시 문제 - 패배한 시리즈가 종료될 때 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?] MaxOpenOrders>1이 어떤 값이면 이론적으로 AllowNewOrders=1도 더 커야 합니다. 같은 값으로. 그러나 이 버전의 프로그램에서는 어쨌든 하나 이상의 시리즈가 계획되어 있지 않기 때문에 지금은 이것에 신경 쓰지 않고 MaxOpenOrders를 완전히 제거할 수 없습니다.
나는 그것을 시도했고, 처음 5분 동안은 잘 작동했고, 그 다음 나는 동시에(4), 증가된 로트와 함께 같은 쌍에 대해 여러 거래를 열기 시작했습니다. Alexander, 전역 변수 가 어떻게 그 값을 얻고 변경하는지 귀하의 버전에서 나에게 완전히 명확하지 않습니까?
얘들아, 난 이미 내 머리를 부숴버렸어. 어드바이저가 고점과 저점에 대한 지연을 설정하도록 하는 방법, 예를 들어 1/4의 테이크를 사용하여 8개의 양초에 대해 설정하는 방법.
나는 다음과 같이 한다.
이중 Vhod1=iHighest(Symbol(),0,MODE_HIGH,8,0);
이중 Vhod2=iLowest(Symbol(),0,MODE_LOW,8,0);
이중 TP=((Vhod1-Vhod2)/4)+Vhod1;
매개변수를 변경하려고 했지만 정류장이 올바르지 않다고 표시되며 가격은 7.00000으로 설정됩니다. 어디로 가는지 명확하지 않습니다.
iHighest, iLowest는 가격이 아닌 양초의 주소를 알려주고 도움말과 교과서를 읽으십시오.
알겠습니다. 필요한
이중 Vhod1=iHigh(Symbol(), 0, iHighest (Symbol(),0,MODE_HIGH,8,0));
이중 Vhod2=iLow(Symbol(), 0, iLowest(Symbol(),0,MODE_LOW,8,0));
잘못 삽입했지만 여전히 제대로 작동하지 않습니다. 왜냐하면 ... 왜냐하면.)) 간단히 말해서 다음과 같아야 합니다.
1) init에서 AllowNewOrders 변수를 만듭니다(존재하지 않는 경우).
2) 닫힐 때까지 새 주문을 생성합니다. 이 기호의 OnTick은 유휴 상태이지만 다른 기호의 OnTick은 작동합니다.
3) 다른 기호에 대한 2단계는 MaxOpenOrders 제한에 도달할 때까지 수행됩니다.
4) 주문 종료 시 수익성이 없거나 0인 경우 AllowNewOrders를 통해 모든 사본에 대해 신규 주문을 개시하는 것을 금지합니다.
[따라서 즉시 문제 - 패배한 시리즈가 끝나면 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?]
5) 4번 항목이 충족되지 않으면 새 주문을 열 수 있습니다.
프로그램은 이미 MaxOpenOrders=1과 함께 작동해야 합니다(SHOULD ALREADY). 실패한 주문에 따라 새로운 주문 AllowNewOrders=0을 금지하고 어떤 이유로 다음 OrderSend 가 주문을 열지 않을 때 여전히 문제가 있을 수 있습니다. 이 경우에 내가 어떻게 보험에 가입하는지 아래에 쓸 것입니다 ...
아래에서이 경우에 내가 어떻게 보장하는지 쓸 것입니다 ...
오류 솔루션을 올바르게 제공하면 주문을 여는 성공률이 높아집니다.
이러한 조건에서 아래 코드는 어떻게 변경될 수 있습니까?
for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
if (! OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) 계속;
if(OrderSymbol()!=Symbol()) 계속; if(OrderMagicNumber() < startMagicNumber || OrderMagicNumber() >= startMagicNumber + MaxTrades) 계속;
시리즈의 첫 주문을 열 때 마법 생성 코드를 설정했는데 같은 시리즈에서 새 주문을 열 때 문제가 있습니다.
게시물의 매직 생성 코드 자체://+----------------------------------------------- --------------------+
// keekkenen: 시리즈의 다음 마법을 얻습니다.
int getNextMagicNumber(){
정수 마법 = 비어 있음;
if (OrdersTotal() == 0) {
반환(startMagicNumber);
}
for (int i = startMagicNumber; i < startMagicNumber + MaxTrades; i++){
매직 = checkMarketByMagic(i);
if (magic != EMPTY) break;
}
if (마법 == 비어 있음){
매직 = startMagicNumber; // 시리즈의 첫 번째
} 또 다른 {
마법++; // 시리즈의 다음
}
리턴(마법);
}
//+----------------------------------------------- --------------------+
// keekkenen: 지정된 마법으로 시장에 주문이 있는지 확인
int checkMarketByMagic(int 마술){
for(int i = 0; i < OrdersTotal(); i++){
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 계속;
if(OrderSymbol() != Symbol()) 계속;
if(OrderMagicNumber() == 마법) return(마법);
}
반환(빈);
}
//+----------------------------------------------- --------------------+
가지를 혼동했다면 죄송하지만 TOPIC을 제대로 붙일 곳을 찾지 못했으니 걷어차지 마세요.
얼마 전 사용자들의 기존 신규 어드바이저를 찾기 위해 인터넷 검색을 하던 중, 설명에 따르면 기준이 많았고 내 불행에 관심을 두지 않았고, 이름도.
아마 보거나 읽은 누군가가 적어도 이름을 알려 주면 Google이 일을 할 것입니다. 만약 있다면 그것을 선물로 받아 들일 것입니다. 비슷한 행동을 하는 비슷한 고문이 있을지도 모릅니다.
어드바이저의 의미를 설명하겠습니다.
대략적으로 그 작업은 다음과 같습니다.
1. 수동으로 포지션을 개설했습니다 (예: 구매).
2. 고문은 그에게 손절매를 설정하고 설정에 따라 이익을 얻습니다.
3. 이익실현으로 주문 마감 - 어드바이저는 첫 번째 손절매를 잡거나 최종 이익실현이 있을 때까지 즉시 또 다른 매수를 열고 동일한 손절매를 설정하고 이익실현을 합니다.
4. 위치가 정지 손실로 닫히면 로봇은 다른 작업을 수행하지 않습니다. EA는 다음 주문이 수동으로 열리기를 기다리고 있습니다.
모두.
나는 매우 감사할 것입니다.
잘못 삽입했지만 여전히 제대로 작동하지 않습니다. 왜냐하면 ... 왜냐하면.)) 간단히 말해서 다음과 같아야 합니다.
1) init에서 AllowNewOrders 변수를 만듭니다(존재하지 않는 경우).
2) 닫힐 때까지 새 주문을 생성합니다. 이 기호의 OnTick은 유휴 상태이지만 다른 기호의 OnTick은 작동합니다.
3) 다른 기호에 대한 2단계는 MaxOpenOrders 제한에 도달할 때까지 수행됩니다.
4) 주문 종료 시 수익성이 없거나 0인 경우 AllowNewOrders를 통해 모든 사본에 대해 신규 주문을 개시하는 것을 금지합니다.
[따라서 즉시 문제 - 패배한 시리즈가 끝나면 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?]
5) 4번 항목이 충족되지 않으면 새 주문을 열 수 있습니다.
프로그램은 이미 MaxOpenOrders=1과 함께 작동해야 합니다(SHOULD ALREADY). 실패한 주문에 따라 새로운 주문 AllowNewOrders=0을 금지하고 어떤 이유로 다음 OrderSend가 주문을 열지 않을 때 여전히 문제가 있을 수 있습니다. 이 경우에 내가 어떻게 보험에 가입하는지 아래에 쓸 것입니다 ...
Alexander님 감사합니다. 내일 확인하겠습니다. [따라서 즉시 문제 - 패배한 시리즈가 종료될 때 AllowNewOrders=1이고 MaxOpenOrders>1이고 이러한 세션이 여러 개 있는 경우?] MaxOpenOrders>1이 어떤 값이면 이론적으로 AllowNewOrders=1도 더 커야 합니다. 같은 값으로. 그러나 이 버전의 프로그램에서는 어쨌든 하나 이상의 시리즈가 계획되어 있지 않기 때문에 지금은 이것에 신경 쓰지 않고 MaxOpenOrders를 완전히 제거할 수 없습니다.
안녕 모두!
차트에 이러한 그래픽 개체가 있습니다.
매개변수에서 시간, 가치, 코드. 값은 개체가 위치한 가격에 해당합니다.
어떻게 든 시간과 가치를 얻을 수 있습니까(함수 또는 다른 것을 통해)?
\\\\
더 광범위한 질문은 다음과 같이 할 수 있습니다. 시간과 가격을 한 번에 얻을 수 있는 개체(추세선, 피보나치선, 간 제외)가 있습니까?
차트에 표시를 하고 정보를 가져와야 합니다. 트렌드를 그립니다. 라인, fibo 등 - 끔찍하게 번거롭고 느림...
답변 감사합니다!
추신: 이제 막 배우기 시작했습니다...
안녕 모두!
차트에 이러한 그래픽 개체가 있습니다.
매개변수에서 시간, 가치, 코드. 값은 개체가 위치한 가격에 해당합니다.
어떻게 든 시간과 가치를 얻을 수 있습니까(함수 또는 다른 것을 통해)?
\\\\
더 광범위한 질문은 다음과 같이 할 수 있습니다. 시간과 가격을 한 번에 얻을 수 있는 개체(추세선, 피보나치선, 간 제외)가 있습니까?
차트에 표시를 하고 정보를 가져와야 합니다. 트렌드를 그립니다. 라인, fibo 등 - 끔찍하게 번거롭고 느림...
답변 감사합니다!
추신: 이제 막 배우기 시작했습니다...
https://docs.mql4.com/en/objects/objectgetinteger