python order breaks ... don't know why??? please help

 

hi

I'm using this order:

 def open_trade_buy2(action, symbol, lot, tp, deviation, ea_magic_number, comment):
                    '''https://www.mql5.com/en/docs/integration/python_metatrader5/mt5ordersend_py
                    '''
                    # prepare the buy request structure
                    symbol_info = get_info(symbol)
                    print("symbol info",symbol_info)
                    print("llegas aquí?(buy)")
                    #symbol_info_tick_dict = mt5.symbol_info_tick(symbol)._asdict()
                    #for prop in symbol_info_tick_dict:
                    #        print("  {}={}".format(prop, symbol_info_tick_dict[prop]))
                   
                    if not mt5.initialize():
                        print("initialize() failed, error code =",mt5.last_error())
                        quit()
                   
                    # display the last GBPUSD tick
                    lasttick=mt5.symbol_info_tick(symbol)
                    print(lasttick)
                   


                    if action == 'buy':
                        trade_type = mt5.ORDER_TYPE_BUY
                        print(trade_type)
                       
                        price = mt5.symbol_info_tick(symbol).ask
                        print(price)
                        pass
                    elif action =='sell':
                        trade_type = mt5.ORDER_TYPE_SELL
                        price = mt5.symbol_info_tick(symbol).bid
                       
                        pass
                    else:
                        pass
                    if tp>price:

                        #point = mt5.symbol_info(symbol).point
                        print("el precio mt5 es:", price)
                        buy_request = {
                            "action": mt5.TRADE_ACTION_DEAL,
                            "symbol": symbol,
                            "volume": lot,
                            "type": trade_type,
                            "price": price,
                            "sl": price-(tp-price),
                            "tp": tp,
                            "deviation": deviation,
                            "magic": ea_magic_number,
                            "comment": comment,
                            "type_time": mt5.ORDER_TIME_GTC, # good till cancelled
                            "type_filling": mt5.ORDER_FILLING_IOC,
                        }
                        # send a trading request
                        result = mt5.order_send(buy_request)    
                       
                    else:
                        print("no possible")  
                        result = "no posible comprar"
                        buy_request = "no posible comprar nene"
                       

                    return result, buy_request

and, when it does an order at the first time .... it does it correctly, but if just some secs behind it does another one (usually its like that), it doesnt do the order and breaks after the print(symbol info).

The symbol info gets the info, but I don't know why it breaks just after that. Does someone know whats happening here? why it breaks and python gives this error:

price = mt5.symbol_info_tick(symbol).ask

AttributeError: 'NoneType' object has no attribute 'ask'


please help.

I'm using python 3.7

 

I have edited your post. In the future please use the CODE button when you insert code.

Code button in editor

MQL5.community - User Memo
MQL5.community - User Memo
  • www.mql5.com
You have just registered and most likely you have questions such as, "How do I insert a picture to my a message?" "How do I format my MQL5 source code?" "Where are my personal messages kept?" You may have many other questions. In this article, we have prepared some hands-on tips that will help you get accustomed in MQL5.community and take full advantage of its available features.
 
Javier Santiago Gaston De Iriarte Cabrera:

hi

I'm using this order:

and, when it does an order at the first time .... it does it correctly, but if just some secs behind it does another one (usually its like that), it doesnt do the order and breaks after the print(symbol info).

The symbol info gets the info, but I don't know why it breaks just after that. Does someone know whats happening here? why it breaks and python gives this error:

price = mt5.symbol_info_tick(symbol).ask

AttributeError: 'NoneType' object has no attribute 'ask'


please help.

I'm using python 3.7

Use last_error() to get more information :

print("symbol_info_tick() failed, error code =",mt5.last_error())
 
Alain Verleyen #:

Use last_error() to get more information :

0k, thanks, I will try that

 
                            "price": price,
                            "sl": price-(tp-price),

You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit by the Ask.

  1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?

  2. Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close at a specific Bid price, add the average spread.
              MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

  3. The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)

    Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes.
    My GBPJPY shows average spread = 26 points, average maximum spread = 134.
    My EURCHF shows average spread = 18 points, average maximum spread = 106.
    (your broker will be similar).
              Is it reasonable to have such a huge spreads (20 PIP spreads) in EURCHF? - General - MQL5 programming forum (2022)

Reason: