[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 697

 
rensbit:
L'angle de l'ancre est l'angle à partir duquel la position de l'objet dans la fenêtre sera comptée. Les angles sont comptés dans le sens des aiguilles d'une montre, de gauche à droite.

Si je m'accroche au coin inférieur droit, que dois-je faire, définir des coordonnées négatives ?
 
valenok2003:

Si je clique sur le coin inférieur droit, dois-je définir des coordonnées négatives ?
Non, les coordonnées positives, le terminal calcule lui-même le point souhaité. Par exemple : 15 pixels à partir du 2ème coin
 
Azerus:

Veuillez me conseiller,

Pour calculer le nombre d'événements continus (par exemple, le nombre de barres d'une série dans lesquelles la clôture est supérieure à l'ouverture et vice versa), je n'ai pu trouver que la formule suivante :

Deux questions (si ce qui précède a un sens) : (1) comment remettre à zéro la valeur du compteur si la série continue s'est arrêtée ; et (2) comment écrire correctement dans Buffer[i] - c'est-à-dire comment "voir" le résultat lui-même ?

Par exemple, si l'indicateur d'une certaine barre affiche "-3", cela signifie que c'est la troisième barre consécutive qui a clôturé en dessous de l'ouverture ; si la barre suivante clôture au-dessus de l'ouverture, l'indicateur affichera "1" .......

int i=Bars-1

while (i > 0) {

int x=0 ;

int y=0 ;

si ( Close[i] > Open[i] ) { x++ ;

Buf [i]= x ; }

if (Close[i] < Open[i] ) { y-- ;

Buf2[i] =y ; }

i-- ;

}

 
rensbit:
Non, des coordonnées positives, le terminal calculera lui-même le point souhaité. Par exemple : 15 pixels à partir de 2 coins
Merci, ça a marché.
 
artmedia70:
Montrez votre code, afin de ne pas deviner


Réalisé dans le programme Gorando, avec votre martin ajouté.

//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp.
//| http://www.gordago.com/ |
//| version 2.0 |
//+------------------------------------------------------------------+

#property copyright "Copyright 2005, Gordago Software Corp."
#lien de propriété "http://www.gordago.com"

#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 218650

extern string sNameExpert = "Generate from Gordago" ;
extern int nAccount =0 ;
extern double dBuyStopLossPoint = 0 ;
extern double dSellStopLossPoint = 0 ;
extern double dBuyTakeProfitPoint = 0 ;
extern double dSellTakeProfitPoint = 0 ;
extern double dBuyTrailingStopPoint = 0 ;
extern double dSellTrailingStopPoint = 0 ;
extern double Lot = 0.10 ;
extern int nSlippage = 30 ;
extern bool lFlagUseHourTrade = True ;
extern inttern nFromHourTrade = 0 ;
extern intToHourTrade = 23 ;
extern bool lFlagUseSound = False ;
extern string sSoundFileName = "alert.wav" ;
extern color colorOpenBuy = Blue ;
extern colorCloseBuy = Aqua ;
extern colorOpenSell = Red ;
extern colorCloseSell = Aqua ;


void deinit() {
Commentaire (") ;
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){
if ( !(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Le temps du commerce n'est pas encore arrivé !") ;
retour(0) ;
}
}

if(Bars < 100){
Print("barres inférieures à 100") ;
retour(0) ;
}

if(nAccount > 0 && nAccount != AccountNumber()){
Comment("Transaction sur le compte : "+NuméroCompte()+" INTERDIT !") ;
retour(0) ;
}

if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss inférieur à " + MIN_STOPLOSS_POINT) ;
retour(0) ;
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit inférieur à " + MIN_TAKEPROFIT_POINT) ;
retour(0) ;
}

double diOpen0=iOpen(NULL,60,0) ;
double d1=(0.00030) ;
double diHigh2=iHigh(NULL,60,0) ;
double diOpen3=iOpen(NULL,60,0) ;
double d4=(0.00030) ;
double diLow5=iLow(NULL,60,0) ;
double diOpen6=iOpen(NULL,60,1) ;
double diClose7=iClose(NULL,60,1) ;
double diOpen8=iOpen(NULL,60,2) ;
double diClose9=iClose(NULL,60,2) ;
double diOpen10=iOpen(NULL,60,0) ;
double d11=(0.00030) ;
double diHigh12=iHigh(NULL,60,0) ;
double diOpen13=iOpen(NULL,60,0) ;
double d14=(0.00030) ;
double diLow15=iLow(NULL,60,0) ;
double diOpen16=iOpen(NULL,60,1) ;
double diClose17=iClose(NULL,60,1) ;
double diOpen18=iOpen(NULL,60,2) ;
double diClose19=iClose(NULL,60,2) ;


si(AccountFreeMargin() < (1000*Lot)){
Print("Nous n'avons pas d'argent. Marge libre = " + AccountFreeMargin()) ;
retour(0) ;
}

bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false ;

lFlagBuyOpen = (diOpen0+d1>diHigh2 && diOpen3-d4<diLow5 && diOpen6<diClose7 && diOpen8>diClose9) ;
lFlagSellOpen = (diOpen10+d11>diHigh12 && diOpen13-d14<diLow15 && diOpen16>diClose17 && diOpen18<diClose19) ;
lFlagBuyClose = False ;
lFlagSellClose = Faux ;

if (!ExistPositions()){

if (lFlagBuyOpen){
OpenBuy() ;
{ retour(0) ;
}

if (lFlagSellOpen){
OpenSell() ;
retour(0) ;
}
}
if(ExistPositions()){
if(OrderType()==OP_BUY){
if(lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy) ;
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName) ;
retour(0) ;
}
}
if(OrderType()==OP_SELL){
if(lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell) ;
si (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName) ;
retour(0) ;
}
}
}

si (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){

for (int i=0 ; i<OrdersTotal() ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true ;
si (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false ;

if (OrderSymbol()==Symbol() && lMagic) {
si (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
si (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
si (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
Modifier le StopLoss (Bid-dBuyTrailingStopPoint*Point) ;
}
}
si (OrderType()==OP_SELL) {
si (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) {
si (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifierStopLoss(Ask+dSellTrailingStopPoint*Point) ;
}
}
}
}
}
}
retour (0) ;
}

bool ExistPositions() {
for (int i=0 ; i<OrdersTotal() ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true ;

si (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false ;

if (OrderSymbol()==Symbol() && lMagic) {
retour(Vrai) ;
}
}
}
retour (faux) ;
}

void ModifyStopLoss(double ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE) ;
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName) ;
}

//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 19.02.2008 |
//| Description : Retourne l'indicateur de perte de la dernière position.
//+----------------------------------------------------------------------------+
//| Paramètres : |
//| sy - nom de l'instrument (" - n'importe quel symbole, |
//| NULL - symbole actuel) |
| //| op - opération (-1 - toute position) |
//| mn - MagicNumber (-1 - n'importe quel magik) |
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
date t ;
int i, j=-1, k=OrdersHistoryTotal() ;

si (sy=="0") sy=Symbole() ;
for (i=0 ; i<k ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
si (OrderSymbol()==sy || sy==") {
si (OrderType()==OP_BUY || OrderType()==OP_SELL) {
si (op<0 || OrderType()==op) {
si (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderCloseTime()) {
t=OrderCloseTime() ;
j=i ;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
si (OrderProfit()<0) return(True)
}
retourner(Faux) ;
}





void OpenBuy(){
double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;

si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveau = Lot ;


si (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point ;

si (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point ;

int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy) ;

si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}

void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;

si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveau = Lot ;

si (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point ;

si (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point ;

int numorder = OrderSend(Symbol(),OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell) ;

si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}

 
valenok2003:

Si vous voulez bien corriger l'exemple, il ne fonctionne pas pour moi pour une raison quelconque.
      ObjectSetText("info", str3, fontsize, fontname);
      ObjectSet("info", OBJPROP_CORNER, corner);
      ObjectSet("info", OBJPROP_XDISTANCE, xdistance);
      ObjectSet("info", OBJPROP_YDISTANCE, ydistance);
      ObjectSet("info", OBJPROP_COLOR, clr);

J'ai rendu le coin variable externe (pour plus de commodité). Il contient le numéro de l'angle à partir duquel les coordonnées seront calculées.

 
Roger:


Essayez de le remplacer par

si (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po||OrderStopLoss()==0)

à

si (OrderStopLoss()>pp-(TStop.Buy+TrailingStep-1)*po||OrderStopLoss()==0)

Roger, merci, mais ça ne fonctionne toujours pas correctement. J'ai essayé un autre chalutage, mais l'erreur est toujours là :( Y a-t-il une différence entre le chalutage d'une pose et le chalutage de plusieurs en même temps ?
 
rensbit:

J'ai rendu la variable d'angle externe (pour des raisons de commodité). Il contient le numéro de l'angle à partir duquel les coordonnées seront calculées.

Merci !

Une dernière question. Comment insérer correctement le symbole de Wingdings dans les commentaires.

 
quel symbole ?
 
rensbit:
quel symbole ?

copyright